Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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
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.
//------------------------------------------------------------------------------
//
// 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
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProjectedSlot.cs
- NativeActivityAbortContext.cs
- SelectedGridItemChangedEvent.cs
- PointHitTestResult.cs
- AttributeUsageAttribute.cs
- XmlSchemaComplexContent.cs
- XmlCountingReader.cs
- ByteKeyFrameCollection.cs
- SignedXml.cs
- TextLineResult.cs
- RegexFCD.cs
- LocationUpdates.cs
- DuplexSecurityProtocolFactory.cs
- ListViewContainer.cs
- NegatedConstant.cs
- EngineSite.cs
- TypeNameConverter.cs
- MemberMaps.cs
- DeferredTextReference.cs
- ClientRuntimeConfig.cs
- ConstraintCollection.cs
- Site.cs
- OlePropertyStructs.cs
- StrokeIntersection.cs
- HelpKeywordAttribute.cs
- Dynamic.cs
- TogglePatternIdentifiers.cs
- DecoderExceptionFallback.cs
- PackWebRequest.cs
- ControlAdapter.cs
- ItemDragEvent.cs
- SqlClientWrapperSmiStreamChars.cs
- TreeViewImageIndexConverter.cs
- SigningDialog.cs
- SqlFactory.cs
- SqlConnectionString.cs
- TransformationRules.cs
- WorkflowPrinting.cs
- RichTextBox.cs
- ImageField.cs
- KeyFrames.cs
- KeyConverter.cs
- SqlBuffer.cs
- ExitEventArgs.cs
- XmlDownloadManager.cs
- NavigationEventArgs.cs
- FontFaceLayoutInfo.cs
- TextParagraphCache.cs
- InputEventArgs.cs
- PropertyCollection.cs
- FrameworkEventSource.cs
- XmlSerializationGeneratedCode.cs
- TextTrailingWordEllipsis.cs
- SqlProfileProvider.cs
- QuaternionAnimationBase.cs
- ToolStripMenuItem.cs
- BoundPropertyEntry.cs
- PowerStatus.cs
- TypeBinaryExpression.cs
- RoutedEventArgs.cs
- ThreadSafeList.cs
- WsdlBuildProvider.cs
- ScriptReference.cs
- LinkedResource.cs
- FormViewPagerRow.cs
- RelatedImageListAttribute.cs
- ToolStripItemImageRenderEventArgs.cs
- MarkupCompilePass1.cs
- JoinTreeNode.cs
- HashUtility.cs
- SiteMapPath.cs
- WorkItem.cs
- DecimalAnimationBase.cs
- TextEditorDragDrop.cs
- ObjectRef.cs
- TableDetailsRow.cs
- MimeObjectFactory.cs
- XmlFileEditor.cs
- RenderDataDrawingContext.cs
- AsyncInvokeContext.cs
- DataGridViewColumnCollection.cs
- ListenUriMode.cs
- BuildTopDownAttribute.cs
- AuthenticationServiceManager.cs
- JapaneseLunisolarCalendar.cs
- StringFormat.cs
- messageonlyhwndwrapper.cs
- XmlMemberMapping.cs
- HScrollBar.cs
- ProfileProvider.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- DesignTimeTemplateParser.cs
- ProxyElement.cs
- DeploymentSection.cs
- ChangePassword.cs
- InstalledFontCollection.cs
- Baml2006KeyRecord.cs
- DirectionalLight.cs
- DateTimeParse.cs
- SrgsDocumentParser.cs