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
- DesignTimeValidationFeature.cs
- WebPartZoneBase.cs
- SQLRoleProvider.cs
- CoreSwitches.cs
- mansign.cs
- ISAPIRuntime.cs
- MarkupObject.cs
- WeakReferenceList.cs
- EventLogInternal.cs
- _ListenerAsyncResult.cs
- UnsafeCollabNativeMethods.cs
- OutputScopeManager.cs
- DrawingVisual.cs
- Polyline.cs
- InstanceValue.cs
- SaveRecipientRequest.cs
- SmiEventStream.cs
- FieldNameLookup.cs
- SslStream.cs
- RelationshipSet.cs
- HostUtils.cs
- RequestChannel.cs
- LockedAssemblyCache.cs
- Converter.cs
- AuthenticationServiceManager.cs
- ScaleTransform.cs
- TdsParserStateObject.cs
- InstanceCompleteException.cs
- ColumnHeaderCollectionEditor.cs
- DSASignatureFormatter.cs
- GC.cs
- externdll.cs
- cookieexception.cs
- SharedStatics.cs
- TraceSource.cs
- DeflateStream.cs
- WmpBitmapEncoder.cs
- VersionConverter.cs
- DataGridViewTextBoxColumn.cs
- IISUnsafeMethods.cs
- WebPartZoneCollection.cs
- LinqDataSourceUpdateEventArgs.cs
- TaiwanLunisolarCalendar.cs
- NodeInfo.cs
- ListChangedEventArgs.cs
- UserControl.cs
- SystemEvents.cs
- TagMapCollection.cs
- SafeCryptoKeyHandle.cs
- EventsTab.cs
- DataGridViewCellValueEventArgs.cs
- HtmlElementEventArgs.cs
- WebBrowserDocumentCompletedEventHandler.cs
- LeafCellTreeNode.cs
- InfiniteIntConverter.cs
- WindowsScroll.cs
- WrapPanel.cs
- Base64Encoding.cs
- DefaultHttpHandler.cs
- PageCatalogPart.cs
- RemotingServices.cs
- ClientBuildManager.cs
- XmlQueryCardinality.cs
- ValidationEventArgs.cs
- UrlMappingsModule.cs
- SmiRecordBuffer.cs
- SmtpNegotiateAuthenticationModule.cs
- SchemaAttDef.cs
- XPathNode.cs
- SapiGrammar.cs
- UpdateException.cs
- SystemInfo.cs
- NamespaceCollection.cs
- DataGridViewTextBoxEditingControl.cs
- GroupByExpressionRewriter.cs
- ArraySortHelper.cs
- MemoryMappedFile.cs
- SHA384.cs
- StickyNote.cs
- TypedTableGenerator.cs
- XmlNavigatorStack.cs
- SafeCryptoHandles.cs
- AppPool.cs
- AdRotator.cs
- CodeArgumentReferenceExpression.cs
- JsonGlobals.cs
- RecognitionEventArgs.cs
- CngKey.cs
- EntityConnection.cs
- Baml2006SchemaContext.cs
- Int16KeyFrameCollection.cs
- GenericTextProperties.cs
- ComplexBindingPropertiesAttribute.cs
- Geometry.cs
- CachingHintValidation.cs
- AgileSafeNativeMemoryHandle.cs
- MenuItemAutomationPeer.cs
- ServiceOperationListItemList.cs
- UnsafeNativeMethods.cs
- UserControlParser.cs