Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / UI / WebControls / ContentPlaceHolder.cs / 1 / ContentPlaceHolder.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
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]));
HttpContext context = HttpContext.Current;
// Remember the old TemplateControl
TemplateControl oldControl = context.TemplateControl;
// Storing the template control into the context
// since each thread needs to set it differently.
context.TemplateControl = masterPage._ownerControl;
try {
// Instantiate the template using the correct TemplateControl
tpl.InstantiateIn(cph);
}
finally {
// Revert back to the old templateControl
context.TemplateControl = oldControl;
}
}
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();
}
}
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[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.Security.Permissions;
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]));
HttpContext context = HttpContext.Current;
// Remember the old TemplateControl
TemplateControl oldControl = context.TemplateControl;
// Storing the template control into the context
// since each thread needs to set it differently.
context.TemplateControl = masterPage._ownerControl;
try {
// Instantiate the template using the correct TemplateControl
tpl.InstantiateIn(cph);
}
finally {
// Revert back to the old templateControl
context.TemplateControl = oldControl;
}
}
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();
}
}
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[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
- SqlBulkCopy.cs
- RegexInterpreter.cs
- Configuration.cs
- BooleanStorage.cs
- ExceptionCollection.cs
- DeferredReference.cs
- SqlDataSourceQueryEditor.cs
- InputLanguageManager.cs
- ScaleTransform3D.cs
- BookmarkWorkItem.cs
- SqlNotificationEventArgs.cs
- PingReply.cs
- PropertyChangingEventArgs.cs
- SubclassTypeValidatorAttribute.cs
- MatchingStyle.cs
- UInt64.cs
- PrintControllerWithStatusDialog.cs
- FileDialogCustomPlacesCollection.cs
- CssStyleCollection.cs
- FrameworkElementFactoryMarkupObject.cs
- FastEncoderWindow.cs
- NavigationWindowAutomationPeer.cs
- OrthographicCamera.cs
- CacheChildrenQuery.cs
- SocketAddress.cs
- IntSecurity.cs
- HtmlButton.cs
- SchemaImporterExtensionElement.cs
- DbExpressionVisitor_TResultType.cs
- IPHostEntry.cs
- XmlSubtreeReader.cs
- Int32CollectionValueSerializer.cs
- FieldDescriptor.cs
- StickyNoteContentControl.cs
- HWStack.cs
- StringConverter.cs
- ComponentDispatcherThread.cs
- RuntimeConfig.cs
- ColumnCollection.cs
- Separator.cs
- FigureParaClient.cs
- ConversionValidationRule.cs
- TimeoutTimer.cs
- HttpClientChannel.cs
- RepeaterDataBoundAdapter.cs
- DataGridCommandEventArgs.cs
- FSWPathEditor.cs
- WbemException.cs
- ElementUtil.cs
- OutputCacheProfileCollection.cs
- RequestStatusBarUpdateEventArgs.cs
- SqlClientWrapperSmiStreamChars.cs
- MarkupExtensionParser.cs
- UpDownBase.cs
- SRGSCompiler.cs
- SignatureResourcePool.cs
- PropertyValidationContext.cs
- StackBuilderSink.cs
- XmlSignatureManifest.cs
- PageAsyncTaskManager.cs
- _RequestCacheProtocol.cs
- Decimal.cs
- tibetanshape.cs
- UnsafeNativeMethods.cs
- WhitespaceSignificantCollectionAttribute.cs
- CharEnumerator.cs
- SupportsEventValidationAttribute.cs
- ApplicationInfo.cs
- BufferedGraphicsContext.cs
- TextElementEditingBehaviorAttribute.cs
- TextServicesManager.cs
- DynamicRenderer.cs
- _SpnDictionary.cs
- OracleEncoding.cs
- XmlElement.cs
- WindowsRichEditRange.cs
- OperationAbortedException.cs
- URI.cs
- LineUtil.cs
- NotifyIcon.cs
- NavigationWindowAutomationPeer.cs
- XmlProcessingInstruction.cs
- DynamicActivity.cs
- Vector3DAnimation.cs
- Panel.cs
- RectangleGeometry.cs
- Tool.cs
- SimpleWorkerRequest.cs
- X509AsymmetricSecurityKey.cs
- SchemaElement.cs
- Brush.cs
- GestureRecognizer.cs
- CapabilitiesState.cs
- ScriptControlManager.cs
- SQLDoubleStorage.cs
- BinHexEncoder.cs
- StylusPointProperty.cs
- ExecutionEngineException.cs
- TextServicesManager.cs
- OleDbConnection.cs