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
- SerializationStore.cs
- Gdiplus.cs
- DriveNotFoundException.cs
- AnnotationStore.cs
- SafeViewOfFileHandle.cs
- QilReplaceVisitor.cs
- CaseKeyBox.ViewModel.cs
- ChannelServices.cs
- CryptoStream.cs
- SecurityContextTokenValidationException.cs
- Property.cs
- DependencyProperty.cs
- CodeTypeDeclarationCollection.cs
- CollectionBase.cs
- MissingManifestResourceException.cs
- SHA256CryptoServiceProvider.cs
- Section.cs
- AlgoModule.cs
- AudioFormatConverter.cs
- DodSequenceMerge.cs
- ServiceHttpModule.cs
- XmlIlVisitor.cs
- StringComparer.cs
- GrammarBuilderPhrase.cs
- SerializationFieldInfo.cs
- GroupBoxDesigner.cs
- DateTimeFormat.cs
- CodeCastExpression.cs
- LayoutTableCell.cs
- SoapExtensionTypeElement.cs
- DefaultTextStore.cs
- CodeIndexerExpression.cs
- CellConstant.cs
- XmlUTF8TextWriter.cs
- CompleteWizardStep.cs
- AssemblyNameProxy.cs
- xmlNames.cs
- SHA256.cs
- ScalarConstant.cs
- ExpressionConverter.cs
- PassportAuthenticationEventArgs.cs
- ExpressionNormalizer.cs
- SoapFault.cs
- PopupRootAutomationPeer.cs
- TableCellAutomationPeer.cs
- ToolStripDropDownClosingEventArgs.cs
- AdministrationHelpers.cs
- Int32RectValueSerializer.cs
- NavigationCommands.cs
- CodeTypeReferenceCollection.cs
- SettingsPropertyWrongTypeException.cs
- ValidationRule.cs
- CustomAttributeSerializer.cs
- FieldToken.cs
- ObjectItemCollection.cs
- TreeNodeCollectionEditor.cs
- ResourceReferenceKeyNotFoundException.cs
- NumericExpr.cs
- StringBuilder.cs
- ExpressionEditorAttribute.cs
- PublisherMembershipCondition.cs
- DbMetaDataFactory.cs
- ProtectedUri.cs
- StrongNamePublicKeyBlob.cs
- SplitContainer.cs
- StdValidatorsAndConverters.cs
- ContainsSearchOperator.cs
- MessageProtectionOrder.cs
- RijndaelManagedTransform.cs
- TextAutomationPeer.cs
- Debug.cs
- Common.cs
- EventRouteFactory.cs
- SqlAliasesReferenced.cs
- AssemblyAttributesGoHere.cs
- ProjectionCamera.cs
- RoleManagerSection.cs
- TransactionValidationBehavior.cs
- Pair.cs
- MatrixTransform3D.cs
- DbParameterHelper.cs
- IndividualDeviceConfig.cs
- DrawItemEvent.cs
- SharedConnectionInfo.cs
- ParameterSubsegment.cs
- InputScopeNameConverter.cs
- LinkGrep.cs
- CodePropertyReferenceExpression.cs
- SizeConverter.cs
- WsatTransactionFormatter.cs
- CompositeFontParser.cs
- WindowCollection.cs
- PrintController.cs
- QilPatternFactory.cs
- TextBoxAutomationPeer.cs
- FactoryMaker.cs
- ISAPIWorkerRequest.cs
- UnsafeNativeMethodsMilCoreApi.cs
- DesignerEditorPartChrome.cs
- IsolatedStorageException.cs