Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / Util / UrlPath.cs / 1 / UrlPath.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design.Util {
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Web.UI.Design;
///
/// Helper class for URLs.
/// The only method in this class is borrowed directly from the runtime's
/// System.Web.Util.UrlPath class.
///
internal class UrlPath {
// Only static methods, so hide constructor.
private UrlPath() {
}
///
/// Returns true if the path is an absolute physical path.
///
private static bool IsAbsolutePhysicalPath(string path) {
if (path == null || path.Length < 3)
return false;
if (path.StartsWith("\\\\", StringComparison.Ordinal))
return true;
return (Char.IsLetter(path[0]) && path[1] == ':' && path[2] == '\\');
}
///
/// Maps an arbitrary path (physical absolute, app-relative, relative) to
/// a physical path using designer host services. If the path cannot be
/// mapped because certain services are not present, null is returned.
///
internal static string MapPath(IServiceProvider serviceProvider, string path) {
if (path.Length == 0) {
return null;
}
if (IsAbsolutePhysicalPath(path)) {
// Absolute path
return path;
}
else {
// Root relative path - use designer host service to map the path
WebFormsRootDesigner rootDesigner = null;
if (serviceProvider != null) {
IDesignerHost designerHost = (IDesignerHost)serviceProvider.GetService(typeof(IDesignerHost));
if ((designerHost != null) && (designerHost.RootComponent != null)) {
rootDesigner = designerHost.GetDesigner(designerHost.RootComponent) as WebFormsRootDesigner;
if (rootDesigner != null) {
string resolvedUrl = rootDesigner.ResolveUrl(path);
// Use the WebApplication server to get a physical path from the app-relative path
IWebApplication webApplicationService = (IWebApplication)serviceProvider.GetService(typeof(IWebApplication));
if (webApplicationService != null) {
IProjectItem dataFileProjectItem = webApplicationService.GetProjectItemFromUrl(resolvedUrl);
if (dataFileProjectItem != null) {
return dataFileProjectItem.PhysicalPath;
}
}
}
}
}
}
// Could not get service to map path, return null
return null;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HandlerBase.cs
- PixelShader.cs
- HttpValueCollection.cs
- RuleAction.cs
- ExtendedProtectionPolicyElement.cs
- ChannelBase.cs
- DataGridViewRowsAddedEventArgs.cs
- HtmlInputFile.cs
- TypeDependencyAttribute.cs
- ArgumentException.cs
- PartialList.cs
- ProfileServiceManager.cs
- Geometry.cs
- SerializerWriterEventHandlers.cs
- CompiledELinqQueryState.cs
- Stack.cs
- XmlChoiceIdentifierAttribute.cs
- DataStreams.cs
- DataSpaceManager.cs
- BooleanFacetDescriptionElement.cs
- Rotation3D.cs
- LightweightCodeGenerator.cs
- TextBox.cs
- TextParentUndoUnit.cs
- GridEntryCollection.cs
- ETagAttribute.cs
- XmlFormatReaderGenerator.cs
- MemoryRecordBuffer.cs
- FlowDocumentFormatter.cs
- SamlAttribute.cs
- PasswordTextContainer.cs
- ProcessModelSection.cs
- ScopelessEnumAttribute.cs
- WorkflowDebuggerSteppingAttribute.cs
- FixedStringLookup.cs
- UserMapPath.cs
- WebPartConnectionsDisconnectVerb.cs
- TableLayoutPanelCellPosition.cs
- ContentFileHelper.cs
- QuotedPrintableStream.cs
- WaitHandleCannotBeOpenedException.cs
- SByte.cs
- HttpResponseWrapper.cs
- AuthenticationException.cs
- NoResizeHandleGlyph.cs
- activationcontext.cs
- XmlWrappingReader.cs
- WebPartDeleteVerb.cs
- ClientTargetSection.cs
- BinaryCommonClasses.cs
- TreeNodeBindingCollection.cs
- ClonableStack.cs
- XmlNamedNodeMap.cs
- UriTemplateTrieNode.cs
- ExpressionVisitor.cs
- CommandLibraryHelper.cs
- AncestorChangedEventArgs.cs
- MetadataItemCollectionFactory.cs
- CreateRefExpr.cs
- TrackBar.cs
- ColumnWidthChangedEvent.cs
- LinkLabel.cs
- NativeWrapper.cs
- SystemTcpConnection.cs
- EmbeddedMailObject.cs
- TouchPoint.cs
- CodeSnippetCompileUnit.cs
- DataGridViewCellCancelEventArgs.cs
- OSFeature.cs
- Brush.cs
- SerializationObjectManager.cs
- DeleteCardRequest.cs
- OdbcHandle.cs
- DatatypeImplementation.cs
- PeerNode.cs
- TypeBuilderInstantiation.cs
- ScriptRegistrationManager.cs
- EventData.cs
- DataViewSetting.cs
- TCPClient.cs
- CombinedGeometry.cs
- HwndKeyboardInputProvider.cs
- ButtonPopupAdapter.cs
- MappingMetadataHelper.cs
- InputMethod.cs
- EntityParameterCollection.cs
- MessageBox.cs
- StreamWriter.cs
- ImportContext.cs
- ObjectAnimationUsingKeyFrames.cs
- SqlTransaction.cs
- FormatVersion.cs
- ForeignKeyFactory.cs
- FrameworkContentElement.cs
- ConnectionsZone.cs
- CodePageUtils.cs
- RequestCache.cs
- BaseParaClient.cs
- DataGridViewCellEventArgs.cs
- SudsParser.cs