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
- SecurityToken.cs
- ThreadAbortException.cs
- DaylightTime.cs
- GrammarBuilderBase.cs
- ValueType.cs
- PriorityBindingExpression.cs
- ListenerElementsCollection.cs
- SafeBitVector32.cs
- SqlNodeAnnotations.cs
- Misc.cs
- PageRequestManager.cs
- NumericUpDownAccelerationCollection.cs
- ObjectAnimationUsingKeyFrames.cs
- CharAnimationBase.cs
- AutomationIdentifier.cs
- TimelineClockCollection.cs
- KeySpline.cs
- Menu.cs
- Function.cs
- ManifestResourceInfo.cs
- Pen.cs
- Cursors.cs
- ConnectionConsumerAttribute.cs
- ListViewCommandEventArgs.cs
- Semaphore.cs
- AccessibilityApplicationManager.cs
- DBCSCodePageEncoding.cs
- WebScriptClientGenerator.cs
- InputProviderSite.cs
- SingleKeyFrameCollection.cs
- InstanceData.cs
- MetadataPropertyCollection.cs
- SqlStatistics.cs
- UnsafeNativeMethods.cs
- ZipPackagePart.cs
- UrlPath.cs
- PassportAuthenticationModule.cs
- NextPreviousPagerField.cs
- SubqueryRules.cs
- ButtonField.cs
- SchemaNamespaceManager.cs
- WindowInteropHelper.cs
- ColumnMapProcessor.cs
- CodeDOMProvider.cs
- XmlNamespaceManager.cs
- XamlInt32CollectionSerializer.cs
- Drawing.cs
- ParallelEnumerableWrapper.cs
- ClientConfigurationSystem.cs
- Compensation.cs
- EncoderFallback.cs
- TypedElement.cs
- PersonalizationState.cs
- NullRuntimeConfig.cs
- DataRecordInternal.cs
- DataControlExtensions.cs
- TreeViewBindingsEditorForm.cs
- GB18030Encoding.cs
- OrderedDictionary.cs
- StackBuilderSink.cs
- X509Chain.cs
- AppDomainUnloadedException.cs
- XamlFilter.cs
- Aggregates.cs
- CompositeCollectionView.cs
- OutOfMemoryException.cs
- ConsoleKeyInfo.cs
- WindowsListViewGroup.cs
- ConfigurationValidatorBase.cs
- WebPartEventArgs.cs
- MsmqIntegrationChannelFactory.cs
- ThemeableAttribute.cs
- FileUtil.cs
- _LazyAsyncResult.cs
- _RequestCacheProtocol.cs
- SQLDecimal.cs
- PlaceHolder.cs
- WorkflowApplication.cs
- RequestCachePolicyConverter.cs
- ClientUtils.cs
- ComponentDispatcher.cs
- IteratorFilter.cs
- PrintPreviewGraphics.cs
- MissingManifestResourceException.cs
- DependencyPropertyKind.cs
- XmlSchemaSequence.cs
- SortQuery.cs
- CustomErrorCollection.cs
- WrappedOptions.cs
- BuildProviderCollection.cs
- DynamicDataRoute.cs
- externdll.cs
- DocobjHost.cs
- InitializationEventAttribute.cs
- WebPartConnectionsCancelEventArgs.cs
- Helpers.cs
- SqlConnection.cs
- Span.cs
- FontFamilyIdentifier.cs
- BindUriHelper.cs