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
- _FtpControlStream.cs
- cookie.cs
- QuaternionRotation3D.cs
- StronglyTypedResourceBuilder.cs
- ElementFactory.cs
- GroupQuery.cs
- IntegerFacetDescriptionElement.cs
- PageThemeCodeDomTreeGenerator.cs
- HideDisabledControlAdapter.cs
- XamlWriter.cs
- DataDocumentXPathNavigator.cs
- PageCodeDomTreeGenerator.cs
- IntegrationExceptionEventArgs.cs
- WindowsServiceCredential.cs
- basenumberconverter.cs
- CellTreeNode.cs
- HtmlElementEventArgs.cs
- NotifyInputEventArgs.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- translator.cs
- IntSumAggregationOperator.cs
- StaticFileHandler.cs
- GacUtil.cs
- CustomErrorsSectionWrapper.cs
- InvokeMethod.cs
- PageClientProxyGenerator.cs
- TraceHandlerErrorFormatter.cs
- TabRenderer.cs
- PTConverter.cs
- Quaternion.cs
- ConstraintEnumerator.cs
- EventArgs.cs
- EndpointBehaviorElement.cs
- XmlEncodedRawTextWriter.cs
- HttpCacheVary.cs
- StandardOleMarshalObject.cs
- MimeMultiPart.cs
- DeferredReference.cs
- SkinBuilder.cs
- MatchSingleFxEngineOpcode.cs
- SqlServer2KCompatibilityCheck.cs
- AsymmetricKeyExchangeDeformatter.cs
- CatalogZone.cs
- FactoryMaker.cs
- ListViewContainer.cs
- AutomationAttributeInfo.cs
- OrderByBuilder.cs
- VoiceInfo.cs
- SortDescription.cs
- SharedPersonalizationStateInfo.cs
- FilePrompt.cs
- CheckBox.cs
- Win32Native.cs
- AnnotationComponentManager.cs
- MessageLoggingElement.cs
- SerializationInfoEnumerator.cs
- _NetworkingPerfCounters.cs
- EdmItemCollection.cs
- DebugView.cs
- RequestSecurityTokenResponse.cs
- MetafileEditor.cs
- PagedDataSource.cs
- _RegBlobWebProxyDataBuilder.cs
- ResourceContainer.cs
- TypedRowGenerator.cs
- RoutedUICommand.cs
- Panel.cs
- SmiEventSink.cs
- StrokeSerializer.cs
- InvalidContentTypeException.cs
- SystemColorTracker.cs
- FilterableAttribute.cs
- WindowInteropHelper.cs
- CodeChecksumPragma.cs
- HttpCachePolicy.cs
- DesignRelation.cs
- CodePageEncoding.cs
- HtmlElementErrorEventArgs.cs
- BamlRecords.cs
- Debug.cs
- ToolStripRendererSwitcher.cs
- Utils.cs
- EntityContainerAssociationSetEnd.cs
- InfoCardSymmetricAlgorithm.cs
- DynamicResourceExtension.cs
- SystemSounds.cs
- CodeParameterDeclarationExpressionCollection.cs
- TouchEventArgs.cs
- OleDbPropertySetGuid.cs
- MessageFormatterConverter.cs
- XmlAttributeAttribute.cs
- ClientBase.cs
- CodeIndexerExpression.cs
- ExpressionBuilder.cs
- AuthenticationConfig.cs
- TableLayoutSettings.cs
- MatcherBuilder.cs
- ProfileProvider.cs
- SharedStatics.cs
- BufferedStream.cs