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
- UnaryNode.cs
- WebPartPersonalization.cs
- ObjectDataSourceSelectingEventArgs.cs
- SerializationEventsCache.cs
- ToolStripTextBox.cs
- ComplexObject.cs
- RsaSecurityKey.cs
- SplayTreeNode.cs
- NativeMethods.cs
- XmlEncodedRawTextWriter.cs
- MaterialGroup.cs
- CacheHelper.cs
- AccessViolationException.cs
- CatalogZone.cs
- VirtualDirectoryMappingCollection.cs
- CssStyleCollection.cs
- TraceContextRecord.cs
- MergeEnumerator.cs
- _IPv4Address.cs
- ModelEditingScope.cs
- XdrBuilder.cs
- OracleRowUpdatedEventArgs.cs
- PageStatePersister.cs
- HttpApplicationStateWrapper.cs
- ProcessHostServerConfig.cs
- SectionXmlInfo.cs
- CompositeFontParser.cs
- MILUtilities.cs
- SessionPageStatePersister.cs
- AssemblyUtil.cs
- DurableDispatcherAddressingFault.cs
- EncryptedPackage.cs
- DataGridViewCellPaintingEventArgs.cs
- ObjectAssociationEndMapping.cs
- FontWeights.cs
- SectionRecord.cs
- KeyboardDevice.cs
- ExtendedProtectionPolicy.cs
- ComplexLine.cs
- WizardStepBase.cs
- XmlSchemaDocumentation.cs
- SoapHeaderAttribute.cs
- AssemblyAssociatedContentFileAttribute.cs
- SafeRegistryHandle.cs
- SwitchLevelAttribute.cs
- PaintEvent.cs
- XmlNodeReader.cs
- QilFactory.cs
- CompressStream.cs
- JoinGraph.cs
- AdornerHitTestResult.cs
- SecurityTokenRequirement.cs
- KeyGestureValueSerializer.cs
- WebPartTransformer.cs
- OpenFileDialog.cs
- DataGridrowEditEndingEventArgs.cs
- Rights.cs
- ToolStripSettings.cs
- PassportAuthenticationModule.cs
- SubqueryTrackingVisitor.cs
- CmsInterop.cs
- OperatingSystem.cs
- RangeValuePattern.cs
- SignedXml.cs
- StreamResourceInfo.cs
- PolygonHotSpot.cs
- DbConnectionPoolGroupProviderInfo.cs
- InteropTrackingRecord.cs
- UInt16Converter.cs
- SqlDataSourceRefreshSchemaForm.cs
- LoginUtil.cs
- DetailsViewRow.cs
- ControlPaint.cs
- ProtocolReflector.cs
- DataGridViewColumnConverter.cs
- StreamReader.cs
- IntellisenseTextBox.designer.cs
- SqlProfileProvider.cs
- HttpCapabilitiesSectionHandler.cs
- Label.cs
- Select.cs
- LocatorPart.cs
- OdbcReferenceCollection.cs
- TempEnvironment.cs
- MsmqInputChannelListenerBase.cs
- Point.cs
- FloatAverageAggregationOperator.cs
- FileStream.cs
- LicenseContext.cs
- XmlIncludeAttribute.cs
- BackoffTimeoutHelper.cs
- BuildManager.cs
- SecurityCriticalDataForSet.cs
- ArraySegment.cs
- IdentityNotMappedException.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- GridViewAutomationPeer.cs
- DataGridBoolColumn.cs
- MSAAEventDispatcher.cs
- ColorAnimationBase.cs