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
- ButtonAutomationPeer.cs
- DesignerSerializationOptionsAttribute.cs
- ListViewItemMouseHoverEvent.cs
- Calendar.cs
- DataGridViewCheckBoxColumn.cs
- baseshape.cs
- FormViewDeleteEventArgs.cs
- Calendar.cs
- UnmanagedMemoryStreamWrapper.cs
- BaseTreeIterator.cs
- OneOf.cs
- XamlFilter.cs
- ImageFormatConverter.cs
- ControlParameter.cs
- _NTAuthentication.cs
- JpegBitmapDecoder.cs
- ThreadStateException.cs
- StatusBarItem.cs
- Figure.cs
- ExpressionBuilderContext.cs
- TextBoxDesigner.cs
- FileRecordSequence.cs
- SafeHandles.cs
- NavigationPropertyEmitter.cs
- LambdaReference.cs
- SQLGuidStorage.cs
- BitmapEffectCollection.cs
- ProfileProvider.cs
- ConvertersCollection.cs
- HwndHostAutomationPeer.cs
- DateTimeUtil.cs
- DataGridColumnStyleMappingNameEditor.cs
- ResourceSet.cs
- XmlSchemaSubstitutionGroup.cs
- WindowsFormsSectionHandler.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- Array.cs
- PointUtil.cs
- SingleResultAttribute.cs
- RequestResizeEvent.cs
- Cursor.cs
- EdmType.cs
- NotifyCollectionChangedEventArgs.cs
- GridViewUpdatedEventArgs.cs
- DockPattern.cs
- MimeParameter.cs
- AssemblyResolver.cs
- CaseStatementSlot.cs
- DataServiceEntityAttribute.cs
- PropertyChangedEventArgs.cs
- ExpandedWrapper.cs
- MulticastOption.cs
- DomainUpDown.cs
- WebHttpSecurity.cs
- Win32SafeHandles.cs
- PolyBezierSegment.cs
- MulticastIPAddressInformationCollection.cs
- PackageDigitalSignature.cs
- ResetableIterator.cs
- SwitchElementsCollection.cs
- ExtendedProtectionPolicyTypeConverter.cs
- CredentialSelector.cs
- UserMapPath.cs
- ObjectDataSourceMethodEventArgs.cs
- RequestedSignatureDialog.cs
- QualifiedId.cs
- DataGridItemEventArgs.cs
- _BaseOverlappedAsyncResult.cs
- BackgroundWorker.cs
- ImageFormat.cs
- SHA1Managed.cs
- UniformGrid.cs
- Selection.cs
- ByteConverter.cs
- ForeignConstraint.cs
- PublisherMembershipCondition.cs
- Point3DCollectionConverter.cs
- Win32Native.cs
- DataColumnChangeEvent.cs
- ParenExpr.cs
- KeyedHashAlgorithm.cs
- PathSegmentCollection.cs
- PathGeometry.cs
- ChangeInterceptorAttribute.cs
- Int64Animation.cs
- ApplicationManager.cs
- WebException.cs
- IsolatedStorage.cs
- COM2Enum.cs
- SchemaCollectionPreprocessor.cs
- MemoryStream.cs
- PauseStoryboard.cs
- TypePresenter.xaml.cs
- ToolboxItem.cs
- XamlRtfConverter.cs
- DiscoveryDocumentReference.cs
- CodeCastExpression.cs
- DbParameterCollectionHelper.cs
- WinEventHandler.cs
- SkewTransform.cs