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
- NotifyCollectionChangedEventArgs.cs
- ValidatedControlConverter.cs
- CharacterBuffer.cs
- FormsAuthenticationEventArgs.cs
- COM2EnumConverter.cs
- SqlInternalConnectionTds.cs
- TaiwanLunisolarCalendar.cs
- ValidationRuleCollection.cs
- FrameworkElement.cs
- WpfGeneratedKnownProperties.cs
- KerberosSecurityTokenProvider.cs
- OleDbSchemaGuid.cs
- DataFieldCollectionEditor.cs
- XD.cs
- SHA1.cs
- ProxyAssemblyNotLoadedException.cs
- MobileControlsSectionHelper.cs
- TemplateKey.cs
- MSHTMLHost.cs
- SystemResourceHost.cs
- RenderCapability.cs
- NetworkInterface.cs
- CapabilitiesRule.cs
- DataGridViewRowPrePaintEventArgs.cs
- OSFeature.cs
- UserNameSecurityTokenProvider.cs
- XmlSchemaType.cs
- CompilerGeneratedAttribute.cs
- RectKeyFrameCollection.cs
- DataFieldConverter.cs
- ACL.cs
- BackStopAuthenticationModule.cs
- ImageClickEventArgs.cs
- FixedTextBuilder.cs
- HeaderElement.cs
- AnimatedTypeHelpers.cs
- TextBoxBase.cs
- SelectionRange.cs
- HandlerBase.cs
- Visual.cs
- XmlDataContract.cs
- BuiltInExpr.cs
- ISCIIEncoding.cs
- XmlSchemaRedefine.cs
- SymmetricCryptoHandle.cs
- nulltextcontainer.cs
- Membership.cs
- BaseTemplateBuildProvider.cs
- Thread.cs
- MemberInfoSerializationHolder.cs
- DeviceContexts.cs
- ClusterSafeNativeMethods.cs
- OperationCanceledException.cs
- CuspData.cs
- ArraySubsetEnumerator.cs
- LogLogRecord.cs
- FilterQueryOptionExpression.cs
- RecommendedAsConfigurableAttribute.cs
- GenericTextProperties.cs
- BitmapScalingModeValidation.cs
- MobileListItem.cs
- GlyphRunDrawing.cs
- ResetableIterator.cs
- CacheDict.cs
- Keywords.cs
- ScriptingAuthenticationServiceSection.cs
- SqlErrorCollection.cs
- IPAddressCollection.cs
- TryExpression.cs
- PlainXmlDeserializer.cs
- VirtualPathProvider.cs
- TailCallAnalyzer.cs
- Membership.cs
- wgx_exports.cs
- DesignOnlyAttribute.cs
- ContainerParaClient.cs
- MinMaxParagraphWidth.cs
- LineServices.cs
- MouseDevice.cs
- WebBrowserSiteBase.cs
- PathSegmentCollection.cs
- TemplateInstanceAttribute.cs
- DayRenderEvent.cs
- CroppedBitmap.cs
- CodeSnippetCompileUnit.cs
- SpotLight.cs
- UnsafeNativeMethods.cs
- JsonSerializer.cs
- ThaiBuddhistCalendar.cs
- TextAdaptor.cs
- IntegerValidatorAttribute.cs
- DateTimeFormatInfoScanner.cs
- DesignerActionUIService.cs
- UndoManager.cs
- DataGridPageChangedEventArgs.cs
- ThemeConfigurationDialog.cs
- Message.cs
- DrawingState.cs
- MailMessageEventArgs.cs
- HtmlInputPassword.cs