Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UnsafeNativeMethods.cs
- Label.cs
- LinqDataSourceUpdateEventArgs.cs
- OledbConnectionStringbuilder.cs
- InkCanvas.cs
- CannotUnloadAppDomainException.cs
- XDeferredAxisSource.cs
- GifBitmapDecoder.cs
- LOSFormatter.cs
- Point3DCollectionConverter.cs
- ParserStreamGeometryContext.cs
- HttpCacheVaryByContentEncodings.cs
- CharKeyFrameCollection.cs
- ToolStripGrip.cs
- IODescriptionAttribute.cs
- XmlException.cs
- FrameworkElementFactory.cs
- ListViewItem.cs
- TypeInfo.cs
- SystemIPAddressInformation.cs
- BamlBinaryWriter.cs
- CompilerInfo.cs
- SqlRecordBuffer.cs
- PropertyRef.cs
- Grant.cs
- WindowsAuthenticationModule.cs
- ClearTypeHintValidation.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- EntityDesignerUtils.cs
- CatalogZone.cs
- TableLayoutPanelBehavior.cs
- Compiler.cs
- InkPresenter.cs
- SaveFileDialog.cs
- DataContractSerializerFaultFormatter.cs
- SafeCryptoHandles.cs
- DispatcherTimer.cs
- BamlBinaryReader.cs
- DateTimeParse.cs
- SpeechSeg.cs
- MultiTrigger.cs
- SettingsPropertyNotFoundException.cs
- PropertyHelper.cs
- ClrProviderManifest.cs
- SimpleMailWebEventProvider.cs
- Grammar.cs
- GlobalEventManager.cs
- HistoryEventArgs.cs
- HtmlFormParameterReader.cs
- RawUIStateInputReport.cs
- Stroke.cs
- AlphabetConverter.cs
- TitleStyle.cs
- FamilyMap.cs
- DefaultExpression.cs
- HttpBindingExtension.cs
- LateBoundBitmapDecoder.cs
- _FtpDataStream.cs
- _Win32.cs
- CodeIdentifiers.cs
- DeferredRunTextReference.cs
- SecurityUtils.cs
- NonSerializedAttribute.cs
- X509Utils.cs
- RedirectionProxy.cs
- Reference.cs
- DataGridViewTopRowAccessibleObject.cs
- StrokeRenderer.cs
- DesignColumnCollection.cs
- FormattedTextSymbols.cs
- DataGridViewRowHeaderCell.cs
- Visual3D.cs
- CodeExpressionStatement.cs
- TreeNodeClickEventArgs.cs
- Transform.cs
- SqlClientWrapperSmiStreamChars.cs
- PerformanceCountersElement.cs
- CodeTypeMember.cs
- SafeRegistryHandle.cs
- BmpBitmapDecoder.cs
- Image.cs
- CompiledQueryCacheKey.cs
- SQLDateTime.cs
- DbCommandDefinition.cs
- MeasureItemEvent.cs
- AttributeTable.cs
- ProvidersHelper.cs
- TextCompositionManager.cs
- DesignerResources.cs
- PhysicalOps.cs
- WindowHelperService.cs
- DataGridColumnHeadersPresenter.cs
- CodeVariableDeclarationStatement.cs
- ButtonFlatAdapter.cs
- MarshalDirectiveException.cs
- GridViewRowCollection.cs
- Table.cs
- RenderData.cs
- GroupBox.cs
- IPEndPoint.cs