Code:
/ 4.0 / 4.0 / 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.
//------------------------------------------------------------------------------
//
// 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
- StopStoryboard.cs
- Privilege.cs
- Stacktrace.cs
- Point3DCollection.cs
- ScrollableControl.cs
- PasswordBoxAutomationPeer.cs
- InfoCardMetadataExchangeClient.cs
- TextDecorationCollectionConverter.cs
- RadioButtonBaseAdapter.cs
- FlowDocumentFormatter.cs
- EllipseGeometry.cs
- XmlUrlResolver.cs
- XmlDocumentType.cs
- TimeIntervalCollection.cs
- dtdvalidator.cs
- SQLDouble.cs
- SoapCodeExporter.cs
- DeclaredTypeValidator.cs
- AttachInfo.cs
- MergeFilterQuery.cs
- ErrorEventArgs.cs
- StrongNameKeyPair.cs
- mediaeventshelper.cs
- XmlTypeAttribute.cs
- WsdlImporter.cs
- SmtpCommands.cs
- SqlUnionizer.cs
- CssClassPropertyAttribute.cs
- RelativeSource.cs
- CheckPair.cs
- ArrangedElement.cs
- PersistChildrenAttribute.cs
- DropShadowBitmapEffect.cs
- WebBrowserSiteBase.cs
- RegistrationServices.cs
- ReaderOutput.cs
- ObjectParameter.cs
- AutomationPatternInfo.cs
- FocusTracker.cs
- httpstaticobjectscollection.cs
- RelationshipEnd.cs
- FaultCode.cs
- AssemblyNameUtility.cs
- SchemaCreator.cs
- OleDbConnectionFactory.cs
- SecurityTokenException.cs
- ImageBrush.cs
- DataGridDesigner.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- HtmlElementErrorEventArgs.cs
- MbpInfo.cs
- CheckStoreFileValidityRequest.cs
- UrlMapping.cs
- Registry.cs
- CodeSubDirectory.cs
- PackWebRequestFactory.cs
- WeakRefEnumerator.cs
- HwndTarget.cs
- CatalogZoneBase.cs
- TemplateControlParser.cs
- PointAnimationBase.cs
- NotCondition.cs
- AnimatedTypeHelpers.cs
- DocumentOrderComparer.cs
- PromptBuilder.cs
- DataBindingList.cs
- OracleTransaction.cs
- WpfPayload.cs
- LicenseProviderAttribute.cs
- ReflectPropertyDescriptor.cs
- SimpleWorkerRequest.cs
- NumberFormatter.cs
- SocketException.cs
- DoubleIndependentAnimationStorage.cs
- ApplicationException.cs
- ByteConverter.cs
- EntitySqlQueryCacheEntry.cs
- RequestValidator.cs
- httpapplicationstate.cs
- HttpTransportElement.cs
- CaseStatementSlot.cs
- DescendantOverDescendantQuery.cs
- RbTree.cs
- ExclusiveTcpListener.cs
- LabelEditEvent.cs
- SmtpException.cs
- ReflectionTypeLoadException.cs
- InstanceNameConverter.cs
- Blend.cs
- processwaithandle.cs
- ContextInformation.cs
- HostedAspNetEnvironment.cs
- CodeExporter.cs
- safelink.cs
- Merger.cs
- NumberAction.cs
- OptimalBreakSession.cs
- UrlAuthFailedErrorFormatter.cs
- BinaryUtilClasses.cs
- Mutex.cs