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
- SmtpReplyReader.cs
- QilDataSource.cs
- SqlDataSourceTableQuery.cs
- WindowsIdentity.cs
- ArrayConverter.cs
- Pen.cs
- XmlIterators.cs
- VirtualizedItemProviderWrapper.cs
- BinaryWriter.cs
- ImageCodecInfo.cs
- OptimizedTemplateContentHelper.cs
- SemanticAnalyzer.cs
- SqlCommandBuilder.cs
- ActivityInterfaces.cs
- MobileControlPersister.cs
- ColorBlend.cs
- MemberAssignmentAnalysis.cs
- Int16KeyFrameCollection.cs
- HttpCookieCollection.cs
- FontFamilyValueSerializer.cs
- SQLDouble.cs
- RijndaelManagedTransform.cs
- WebPartTransformerAttribute.cs
- CopyOnWriteList.cs
- Encoder.cs
- NamespaceCollection.cs
- CodeExporter.cs
- DataGridViewTextBoxCell.cs
- Int16Storage.cs
- RangeValuePattern.cs
- BitmapMetadataEnumerator.cs
- SizeValueSerializer.cs
- LookupNode.cs
- UriExt.cs
- CopyOfAction.cs
- WizardDesigner.cs
- ListViewDataItem.cs
- UnmanagedMemoryStream.cs
- NameValuePermission.cs
- Math.cs
- CopyAttributesAction.cs
- DataServiceStreamProviderWrapper.cs
- ComplusTypeValidator.cs
- PropertyEmitter.cs
- Int64.cs
- ScriptingWebServicesSectionGroup.cs
- LinkDescriptor.cs
- WebServiceErrorEvent.cs
- DataGridView.cs
- GridViewRowCollection.cs
- Encoding.cs
- WebPartPersonalization.cs
- BuilderInfo.cs
- ThemeInfoAttribute.cs
- MetabaseSettings.cs
- DataTrigger.cs
- _TLSstream.cs
- VirtualizingStackPanel.cs
- Pkcs7Recipient.cs
- Logging.cs
- Literal.cs
- TiffBitmapEncoder.cs
- QuerySettings.cs
- XmlSchemaAppInfo.cs
- NamedElement.cs
- GridItemCollection.cs
- XmlHierarchicalDataSourceView.cs
- TextElementCollection.cs
- VisualTarget.cs
- TypeDependencyAttribute.cs
- _DigestClient.cs
- ConfigXmlWhitespace.cs
- Font.cs
- EnumConverter.cs
- TextCompositionManager.cs
- ResXResourceReader.cs
- TrackingSection.cs
- DictionaryEntry.cs
- ScopelessEnumAttribute.cs
- XmlSchemaValidator.cs
- Misc.cs
- GeneralTransformCollection.cs
- PropertyGrid.cs
- DbSetClause.cs
- FileDataSourceCache.cs
- ServiceModelTimeSpanValidator.cs
- AttachedAnnotationChangedEventArgs.cs
- AppearanceEditorPart.cs
- TableColumn.cs
- MailBnfHelper.cs
- ColumnHeader.cs
- UriSchemeKeyedCollection.cs
- PasswordRecovery.cs
- Triplet.cs
- httpapplicationstate.cs
- WindowsListViewSubItem.cs
- HttpStreamMessageEncoderFactory.cs
- GlyphsSerializer.cs
- Knowncolors.cs
- DataRowView.cs