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
- XmlnsCache.cs
- NavigationWindowAutomationPeer.cs
- SqlWriter.cs
- GridViewRowCollection.cs
- AppDomain.cs
- Helpers.cs
- ContentFileHelper.cs
- ToolboxItemAttribute.cs
- TextEditorDragDrop.cs
- WebBrowserUriTypeConverter.cs
- IDispatchConstantAttribute.cs
- DataSpaceManager.cs
- TextSelectionProcessor.cs
- HMACMD5.cs
- CustomValidator.cs
- Size.cs
- XmlDocumentType.cs
- ReadOnlyHierarchicalDataSourceView.cs
- InvalidPrinterException.cs
- SizeConverter.cs
- EventProviderWriter.cs
- DelayLoadType.cs
- ValueOfAction.cs
- ArrayWithOffset.cs
- GPPOINTF.cs
- GrammarBuilder.cs
- PathSegment.cs
- AudioFormatConverter.cs
- RectangleF.cs
- LockRenewalTask.cs
- SymmetricCryptoHandle.cs
- UserControlDesigner.cs
- WebPartConnectionsDisconnectVerb.cs
- PointCollectionConverter.cs
- DataGridViewColumnEventArgs.cs
- ServiceHostingEnvironment.cs
- ScrollViewerAutomationPeer.cs
- DrawListViewColumnHeaderEventArgs.cs
- Graphics.cs
- basecomparevalidator.cs
- OneWayBindingElementImporter.cs
- TextRangeAdaptor.cs
- ArgumentNullException.cs
- Rect.cs
- SequentialOutput.cs
- XmlLanguageConverter.cs
- ListViewItem.cs
- ContentWrapperAttribute.cs
- ComplexTypeEmitter.cs
- SettingsPropertyWrongTypeException.cs
- CodeBinaryOperatorExpression.cs
- ObjectListShowCommandsEventArgs.cs
- DataAdapter.cs
- DocumentViewerConstants.cs
- Relationship.cs
- StateDesigner.Helpers.cs
- WebHttpEndpointElement.cs
- LogicalExpr.cs
- DataControlLinkButton.cs
- DocumentSchemaValidator.cs
- TraceContextEventArgs.cs
- AdapterUtil.cs
- MenuScrollingVisibilityConverter.cs
- OracleParameterBinding.cs
- SQLGuidStorage.cs
- Converter.cs
- ThreadStaticAttribute.cs
- ViewBox.cs
- String.cs
- XmlAttributeCollection.cs
- CodeParameterDeclarationExpression.cs
- SerializerProvider.cs
- PerformanceCounterManager.cs
- DataControlFieldsEditor.cs
- MappingMetadataHelper.cs
- UnSafeCharBuffer.cs
- EntityDataReader.cs
- DataGridItemEventArgs.cs
- AspNetHostingPermission.cs
- SQLString.cs
- IResourceProvider.cs
- ThousandthOfEmRealPoints.cs
- SafeArrayRankMismatchException.cs
- DataGridViewTextBoxColumn.cs
- Sql8ConformanceChecker.cs
- _BufferOffsetSize.cs
- PassportAuthentication.cs
- TypeElement.cs
- HttpStreamXmlDictionaryReader.cs
- MatrixConverter.cs
- ResXBuildProvider.cs
- EastAsianLunisolarCalendar.cs
- BuildProvider.cs
- VersionedStream.cs
- JavaScriptString.cs
- ArrayWithOffset.cs
- HttpUnhandledOperationInvoker.cs
- WebPartEditorOkVerb.cs
- SQLBinaryStorage.cs
- ConstraintCollection.cs