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
- Timer.cs
- XslCompiledTransform.cs
- CmsInterop.cs
- Point3D.cs
- SortedSetDebugView.cs
- InternalSafeNativeMethods.cs
- RIPEMD160Managed.cs
- DashStyle.cs
- UrlPath.cs
- TextAnchor.cs
- DbParameterHelper.cs
- UseLicense.cs
- OutputScope.cs
- OleDbInfoMessageEvent.cs
- NonParentingControl.cs
- QueueProcessor.cs
- IPHostEntry.cs
- WindowsAuthenticationEventArgs.cs
- FormViewUpdateEventArgs.cs
- ForeignKeyFactory.cs
- DbConnectionOptions.cs
- WinFormsSecurity.cs
- WindowsListViewItemStartMenu.cs
- ChannelBinding.cs
- RankException.cs
- Literal.cs
- XmlUTF8TextWriter.cs
- StylusPointPropertyInfo.cs
- MailWriter.cs
- ResetableIterator.cs
- ParserHooks.cs
- _LocalDataStore.cs
- WebReferencesBuildProvider.cs
- Authorization.cs
- ClientConfigurationHost.cs
- Events.cs
- relpropertyhelper.cs
- CommandManager.cs
- parserscommon.cs
- _UriTypeConverter.cs
- PartialCachingControl.cs
- Stylus.cs
- CompilerState.cs
- KnownTypesProvider.cs
- EndpointDispatcherTable.cs
- ValueTypeFixupInfo.cs
- CallbackValidator.cs
- WorkerRequest.cs
- DetailsViewUpdatedEventArgs.cs
- StatusBarItemAutomationPeer.cs
- PropertyGeneratedEventArgs.cs
- CommandCollectionEditor.cs
- ParseElementCollection.cs
- HtmlInputRadioButton.cs
- UrlEncodedParameterWriter.cs
- LocalValueEnumerator.cs
- OpCellTreeNode.cs
- CollectionBase.cs
- StateItem.cs
- XPathSelectionIterator.cs
- TextParagraphView.cs
- GlobalizationSection.cs
- DbConnectionPoolGroupProviderInfo.cs
- TransportReplyChannelAcceptor.cs
- XmlValidatingReaderImpl.cs
- DynamicActivityProperty.cs
- DbCommandTree.cs
- SpellerError.cs
- ObjectDisposedException.cs
- HtmlLinkAdapter.cs
- DetailsViewInsertEventArgs.cs
- BamlRecordWriter.cs
- SourceInterpreter.cs
- LoadMessageLogger.cs
- CompilationSection.cs
- Journaling.cs
- TextDecorationCollectionConverter.cs
- PerformanceCounterPermissionEntry.cs
- ASCIIEncoding.cs
- MenuAutoFormat.cs
- KnownTypesHelper.cs
- SystemColors.cs
- GlyphTypeface.cs
- BinHexEncoding.cs
- SByteConverter.cs
- SymbolPair.cs
- CodeConstructor.cs
- BaseDataBoundControl.cs
- MouseBinding.cs
- FlowPanelDesigner.cs
- CroppedBitmap.cs
- _ContextAwareResult.cs
- ClonableStack.cs
- InlineObject.cs
- IdentifierCreationService.cs
- PropertyTabChangedEvent.cs
- XmlILOptimizerVisitor.cs
- EntitySetBaseCollection.cs
- DataBoundControl.cs
- SessionStateItemCollection.cs