Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / MasterPageParser.cs / 1 / MasterPageParser.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Implements the ASP.NET master page parser
*
* Copyright (c) 1998 Microsoft Corporation
*/
namespace System.Web.UI {
using System;
using System.Collections;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.Web.Compilation;
using System.Globalization;
using System.Web;
using System.Web.Util;
/*
* Parser for MasterPage
*/
internal sealed class MasterPageParser : UserControlParser {
internal override Type DefaultBaseType { get { return typeof(System.Web.UI.MasterPage); } }
internal new const string defaultDirectiveName = "master";
internal override string DefaultDirectiveName {
get { return defaultDirectiveName; }
}
internal override Type DefaultFileLevelBuilderType {
get {
return typeof(FileLevelMasterPageControlBuilder);
}
}
private Type _masterPageType;
internal Type MasterPageType { get { return _masterPageType; } }
private CaseInsensitiveStringSet _placeHolderList;
internal CaseInsensitiveStringSet PlaceHolderList {
get {
if (_placeHolderList == null)
_placeHolderList = new CaseInsensitiveStringSet();
return _placeHolderList;
}
}
// Do not apply the basetype. Override this method
// so the userControlbasetype do not affect masterpages.
internal override void ApplyBaseType() {
}
internal override RootBuilder CreateDefaultFileLevelBuilder() {
return new FileLevelMasterPageControlBuilder();
}
internal override void ProcessDirective(string directiveName, IDictionary directive) {
if (StringUtil.EqualsIgnoreCase(directiveName, "masterType")) {
if (_masterPageType != null) {
ProcessError(SR.GetString(SR.Only_one_directive_allowed, directiveName));
return;
}
_masterPageType = GetDirectiveType(directive, directiveName);
Util.CheckAssignableType(typeof(MasterPage), _masterPageType);
}
// outputcaching is not allowed on masterpages.
else if (StringUtil.EqualsIgnoreCase(directiveName, "outputcache")) {
ProcessError(SR.GetString(SR.Directive_not_allowed, directiveName));
return;
}
else {
base.ProcessDirective(directiveName, directive);
}
}
internal override bool ProcessMainDirectiveAttribute(string deviceName, string name,
string value, IDictionary parseData) {
switch (name) {
case "masterpagefile":
// Skip validity check for expression builder (e.g. <%$ ... %>)
if (IsExpressionBuilderValue(value)) return false;
if (value.Length > 0) {
// Add dependency on the Type by calling this method
Type type = GetReferencedType(value);
Util.CheckAssignableType(typeof(MasterPage), type);
}
// Return false to let the generic attribute processing continue
return false;
// outputcaching is not allowed on masterpages.
case "outputcaching" :
ProcessError(SR.GetString(SR.Attr_not_supported_in_directive,
name, DefaultDirectiveName));
// Return false to let the generic attribute processing continue
return false;
default:
// We didn't handle the attribute. Try the base class
return base.ProcessMainDirectiveAttribute(deviceName, name, value, parseData);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Implements the ASP.NET master page parser
*
* Copyright (c) 1998 Microsoft Corporation
*/
namespace System.Web.UI {
using System;
using System.Collections;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.Web.Compilation;
using System.Globalization;
using System.Web;
using System.Web.Util;
/*
* Parser for MasterPage
*/
internal sealed class MasterPageParser : UserControlParser {
internal override Type DefaultBaseType { get { return typeof(System.Web.UI.MasterPage); } }
internal new const string defaultDirectiveName = "master";
internal override string DefaultDirectiveName {
get { return defaultDirectiveName; }
}
internal override Type DefaultFileLevelBuilderType {
get {
return typeof(FileLevelMasterPageControlBuilder);
}
}
private Type _masterPageType;
internal Type MasterPageType { get { return _masterPageType; } }
private CaseInsensitiveStringSet _placeHolderList;
internal CaseInsensitiveStringSet PlaceHolderList {
get {
if (_placeHolderList == null)
_placeHolderList = new CaseInsensitiveStringSet();
return _placeHolderList;
}
}
// Do not apply the basetype. Override this method
// so the userControlbasetype do not affect masterpages.
internal override void ApplyBaseType() {
}
internal override RootBuilder CreateDefaultFileLevelBuilder() {
return new FileLevelMasterPageControlBuilder();
}
internal override void ProcessDirective(string directiveName, IDictionary directive) {
if (StringUtil.EqualsIgnoreCase(directiveName, "masterType")) {
if (_masterPageType != null) {
ProcessError(SR.GetString(SR.Only_one_directive_allowed, directiveName));
return;
}
_masterPageType = GetDirectiveType(directive, directiveName);
Util.CheckAssignableType(typeof(MasterPage), _masterPageType);
}
// outputcaching is not allowed on masterpages.
else if (StringUtil.EqualsIgnoreCase(directiveName, "outputcache")) {
ProcessError(SR.GetString(SR.Directive_not_allowed, directiveName));
return;
}
else {
base.ProcessDirective(directiveName, directive);
}
}
internal override bool ProcessMainDirectiveAttribute(string deviceName, string name,
string value, IDictionary parseData) {
switch (name) {
case "masterpagefile":
// Skip validity check for expression builder (e.g. <%$ ... %>)
if (IsExpressionBuilderValue(value)) return false;
if (value.Length > 0) {
// Add dependency on the Type by calling this method
Type type = GetReferencedType(value);
Util.CheckAssignableType(typeof(MasterPage), type);
}
// Return false to let the generic attribute processing continue
return false;
// outputcaching is not allowed on masterpages.
case "outputcaching" :
ProcessError(SR.GetString(SR.Attr_not_supported_in_directive,
name, DefaultDirectiveName));
// Return false to let the generic attribute processing continue
return false;
default:
// We didn't handle the attribute. Try the base class
return base.ProcessMainDirectiveAttribute(deviceName, name, value, parseData);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TableCell.cs
- Sql8ConformanceChecker.cs
- QueueSurrogate.cs
- WebPartsPersonalizationAuthorization.cs
- HttpStreamXmlDictionaryWriter.cs
- CompilerState.cs
- MetadataUtilsSmi.cs
- MultiSelector.cs
- X509SubjectKeyIdentifierClause.cs
- CodeAccessPermission.cs
- ProcessModuleCollection.cs
- HttpPostClientProtocol.cs
- TextServicesContext.cs
- _DisconnectOverlappedAsyncResult.cs
- ScriptComponentDescriptor.cs
- EntitySqlQueryCacheEntry.cs
- ObjectDataSourceSelectingEventArgs.cs
- VirtualPathUtility.cs
- FtpRequestCacheValidator.cs
- CodeNamespace.cs
- TextTrailingWordEllipsis.cs
- ContentType.cs
- PowerEase.cs
- Crc32Helper.cs
- CellConstant.cs
- HwndHostAutomationPeer.cs
- SoapClientProtocol.cs
- PersonalizablePropertyEntry.cs
- PrinterResolution.cs
- FileLogRecordHeader.cs
- DictionaryKeyPropertyAttribute.cs
- FeatureAttribute.cs
- TemplateFactory.cs
- PolicyException.cs
- AutomationElementCollection.cs
- UntypedNullExpression.cs
- Floater.cs
- WebPartZoneBaseDesigner.cs
- MsmqInputSessionChannelListener.cs
- SpecialTypeDataContract.cs
- NetNamedPipeBinding.cs
- HwndTarget.cs
- ObjectItemCollection.cs
- LinkedResource.cs
- TableProviderWrapper.cs
- DataTableCollection.cs
- TransformGroup.cs
- DataControlFieldCell.cs
- EncodingInfo.cs
- IdleTimeoutMonitor.cs
- DockPatternIdentifiers.cs
- ITreeGenerator.cs
- DataGridAddNewRow.cs
- AccessDataSource.cs
- HitTestWithPointDrawingContextWalker.cs
- WsatConfiguration.cs
- SiteMapNodeItem.cs
- Opcode.cs
- TagMapCollection.cs
- TracingConnection.cs
- JsonClassDataContract.cs
- TemplateControlParser.cs
- CodeDomSerializationProvider.cs
- XhtmlTextWriter.cs
- ButtonRenderer.cs
- DataObjectPastingEventArgs.cs
- BindingNavigator.cs
- StylusPointDescription.cs
- DataServiceExpressionVisitor.cs
- DataServiceClientException.cs
- AutomationPropertyInfo.cs
- TypeDescriptionProviderAttribute.cs
- FormsAuthenticationConfiguration.cs
- DataComponentGenerator.cs
- AnchoredBlock.cs
- ComponentDispatcherThread.cs
- NavigationService.cs
- DataServiceHostFactory.cs
- DoubleConverter.cs
- FixedSOMTable.cs
- XmlnsPrefixAttribute.cs
- XmlCompatibilityReader.cs
- SecurityPolicySection.cs
- XmlTextEncoder.cs
- IPEndPoint.cs
- Command.cs
- BindingSourceDesigner.cs
- EventRoute.cs
- HitTestFilterBehavior.cs
- NamespaceEmitter.cs
- Codec.cs
- TextParagraph.cs
- Registry.cs
- PropertyGridEditorPart.cs
- SqlDataSourceConfigureFilterForm.cs
- TitleStyle.cs
- TransformerTypeCollection.cs
- OrderByLifter.cs
- InkPresenterAutomationPeer.cs
- XmlHierarchicalEnumerable.cs