Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebControls / ContentPlaceHolder.cs / 1305376 / ContentPlaceHolder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.ComponentModel; using System.Web.UI; using System.Web.Util; internal class ContentPlaceHolderBuilder : ControlBuilder { private string _contentPlaceHolderID; private string _templateName; internal string Name { get { return _templateName; } } public override void Init(TemplateParser parser, ControlBuilder parentBuilder, Type type, string tagName, string ID, IDictionary attribs) { // Copy the ID so that it will be available when BuildObject is called _contentPlaceHolderID = ID; if (parser.FInDesigner) { // shortcut for designer base.Init(parser, parentBuilder, type, tagName, ID, attribs); return; } if (String.IsNullOrEmpty(ID)) { throw new HttpException(SR.GetString(SR.Control_Missing_Attribute, "ID", type.Name)); } _templateName = ID; MasterPageParser masterPageParser = parser as MasterPageParser; if (masterPageParser == null) { throw new HttpException(SR.GetString(SR.ContentPlaceHolder_only_in_master)); } base.Init(parser, parentBuilder, type, tagName, ID, attribs); if (masterPageParser.PlaceHolderList.Contains(Name)) throw new HttpException(SR.GetString(SR.ContentPlaceHolder_duplicate_contentPlaceHolderID, Name)); masterPageParser.PlaceHolderList.Add(Name); } public override object BuildObject() { MasterPage masterPage = TemplateControl as MasterPage; Debug.Assert(masterPage != null || InDesigner); // Instantiate the ContentPlaceHolder ContentPlaceHolder cph = (ContentPlaceHolder) base.BuildObject(); // If the page is providing content, instantiate it in the holder if (PageProvidesMatchingContent(masterPage)) { ITemplate tpl = ((System.Web.UI.ITemplate)(masterPage.ContentTemplates[_contentPlaceHolderID])); masterPage.InstantiateInContentPlaceHolder(cph, tpl); } return cph; } internal override void BuildChildren(object parentObj) { MasterPage masterPage = TemplateControl as MasterPage; // If the page is providing content, don't call the base, which would // instantiate the default content (which we don't want) if (PageProvidesMatchingContent(masterPage)) return; base.BuildChildren(parentObj); } private bool PageProvidesMatchingContent(MasterPage masterPage) { if (masterPage != null && masterPage.ContentTemplates != null && masterPage.ContentTemplates.Contains(_contentPlaceHolderID)) { return true; } return false; } } // Factory used to efficiently create builder instances internal class ContentPlaceHolderBuilderFactory: IWebObjectFactory { object IWebObjectFactory.CreateInstance() { return new ContentPlaceHolderBuilder(); } } [ControlBuilderAttribute(typeof(ContentPlaceHolderBuilder))] [Designer("System.Web.UI.Design.WebControls.ContentPlaceHolderDesigner, " + AssemblyRef.SystemDesign)] [ToolboxItemFilter("System.Web.UI")] [ToolboxItemFilter("Microsoft.VisualStudio.Web.WebForms.MasterPageWebFormDesigner", ToolboxItemFilterType.Require)] [ToolboxData("<{0}:ContentPlaceHolder runat=\"server\">{0}:ContentPlaceHolder>")] public class ContentPlaceHolder : Control, INonBindingContainer { } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.Collections; using System.ComponentModel; using System.Web.UI; using System.Web.Util; internal class ContentPlaceHolderBuilder : ControlBuilder { private string _contentPlaceHolderID; private string _templateName; internal string Name { get { return _templateName; } } public override void Init(TemplateParser parser, ControlBuilder parentBuilder, Type type, string tagName, string ID, IDictionary attribs) { // Copy the ID so that it will be available when BuildObject is called _contentPlaceHolderID = ID; if (parser.FInDesigner) { // shortcut for designer base.Init(parser, parentBuilder, type, tagName, ID, attribs); return; } if (String.IsNullOrEmpty(ID)) { throw new HttpException(SR.GetString(SR.Control_Missing_Attribute, "ID", type.Name)); } _templateName = ID; MasterPageParser masterPageParser = parser as MasterPageParser; if (masterPageParser == null) { throw new HttpException(SR.GetString(SR.ContentPlaceHolder_only_in_master)); } base.Init(parser, parentBuilder, type, tagName, ID, attribs); if (masterPageParser.PlaceHolderList.Contains(Name)) throw new HttpException(SR.GetString(SR.ContentPlaceHolder_duplicate_contentPlaceHolderID, Name)); masterPageParser.PlaceHolderList.Add(Name); } public override object BuildObject() { MasterPage masterPage = TemplateControl as MasterPage; Debug.Assert(masterPage != null || InDesigner); // Instantiate the ContentPlaceHolder ContentPlaceHolder cph = (ContentPlaceHolder) base.BuildObject(); // If the page is providing content, instantiate it in the holder if (PageProvidesMatchingContent(masterPage)) { ITemplate tpl = ((System.Web.UI.ITemplate)(masterPage.ContentTemplates[_contentPlaceHolderID])); masterPage.InstantiateInContentPlaceHolder(cph, tpl); } return cph; } internal override void BuildChildren(object parentObj) { MasterPage masterPage = TemplateControl as MasterPage; // If the page is providing content, don't call the base, which would // instantiate the default content (which we don't want) if (PageProvidesMatchingContent(masterPage)) return; base.BuildChildren(parentObj); } private bool PageProvidesMatchingContent(MasterPage masterPage) { if (masterPage != null && masterPage.ContentTemplates != null && masterPage.ContentTemplates.Contains(_contentPlaceHolderID)) { return true; } return false; } } // Factory used to efficiently create builder instances internal class ContentPlaceHolderBuilderFactory: IWebObjectFactory { object IWebObjectFactory.CreateInstance() { return new ContentPlaceHolderBuilder(); } } [ControlBuilderAttribute(typeof(ContentPlaceHolderBuilder))] [Designer("System.Web.UI.Design.WebControls.ContentPlaceHolderDesigner, " + AssemblyRef.SystemDesign)] [ToolboxItemFilter("System.Web.UI")] [ToolboxItemFilter("Microsoft.VisualStudio.Web.WebForms.MasterPageWebFormDesigner", ToolboxItemFilterType.Require)] [ToolboxData("<{0}:ContentPlaceHolder runat=\"server\">{0}:ContentPlaceHolder>")] public class ContentPlaceHolder : Control, INonBindingContainer { } } // 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
- GlobalEventManager.cs
- TrackingParameters.cs
- UriParserTemplates.cs
- WindowsListView.cs
- SecurityKeyType.cs
- BoundingRectTracker.cs
- ProcessStartInfo.cs
- NativeCompoundFileAPIs.cs
- httpstaticobjectscollection.cs
- HttpVersion.cs
- DelimitedListTraceListener.cs
- CorrelationManager.cs
- AppDomainAttributes.cs
- _DomainName.cs
- FlowDocumentPage.cs
- NamespaceInfo.cs
- UndoEngine.cs
- StorageModelBuildProvider.cs
- PrintDialogException.cs
- UniformGrid.cs
- TerminateSequenceResponse.cs
- InternalDispatchObject.cs
- ListComponentEditorPage.cs
- ListViewItemEventArgs.cs
- Resources.Designer.cs
- TimerExtension.cs
- CompatibleIComparer.cs
- Rect3DConverter.cs
- BindingWorker.cs
- PrefixHandle.cs
- ObjectStateFormatter.cs
- Group.cs
- WebPartTransformerCollection.cs
- Site.cs
- DiagnosticsConfigurationHandler.cs
- ColumnHeaderConverter.cs
- CodeObject.cs
- DescendantOverDescendantQuery.cs
- UnionExpr.cs
- GridViewEditEventArgs.cs
- AutomationProperties.cs
- RoleService.cs
- OracleCommandBuilder.cs
- DivideByZeroException.cs
- Timer.cs
- StringFunctions.cs
- ListViewItemSelectionChangedEvent.cs
- SharedStream.cs
- SchemaObjectWriter.cs
- OuterGlowBitmapEffect.cs
- AtomServiceDocumentSerializer.cs
- InvalidFilterCriteriaException.cs
- UnitySerializationHolder.cs
- LeaseManager.cs
- SQLSingleStorage.cs
- XamlBrushSerializer.cs
- FontCollection.cs
- ActivityLocationReferenceEnvironment.cs
- FontStyle.cs
- InternalDuplexChannelListener.cs
- DecimalAnimation.cs
- DocumentXmlWriter.cs
- SchemaImporterExtensionElementCollection.cs
- SoapElementAttribute.cs
- DynamicEntity.cs
- LinqDataView.cs
- PagesChangedEventArgs.cs
- DataSourceCacheDurationConverter.cs
- ToolStripItemEventArgs.cs
- BackgroundWorker.cs
- ColumnCollection.cs
- COM2ColorConverter.cs
- fixedPageContentExtractor.cs
- RestrictedTransactionalPackage.cs
- DataContractFormatAttribute.cs
- SemanticBasicElement.cs
- SqlUDTStorage.cs
- DashStyles.cs
- PropertyInformation.cs
- SchemaTableOptionalColumn.cs
- OdbcConnectionStringbuilder.cs
- TextFormatter.cs
- Int16AnimationUsingKeyFrames.cs
- TemplatedWizardStep.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- Deserializer.cs
- ContextMenu.cs
- HealthMonitoringSection.cs
- MetabaseServerConfig.cs
- MulticastNotSupportedException.cs
- TableProviderWrapper.cs
- Baml6Assembly.cs
- OpacityConverter.cs
- ResXResourceSet.cs
- GraphicsState.cs
- GridViewSelectEventArgs.cs
- ContainerUIElement3D.cs
- ADRoleFactoryConfiguration.cs
- CounterNameConverter.cs
- CheckBox.cs