Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / UserControl.cs / 1 / UserControl.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Page class definition
*
* Copyright (c) 1998 Microsoft Corporation
*/
namespace System.Web.UI {
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Web.SessionState;
using System.Web.Caching;
using System.Security.Permissions;
using System.Web.Util;
///
/// The ControlBuilder associated with a UserControl. If you want a custom ControlBuilder for your
/// derived UserControl, you should derive it from UserControlControlBuilder.
///
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class UserControlControlBuilder : ControlBuilder {
private string _innerText;
///
public override object BuildObject() {
object o = base.BuildObject();
if (InDesigner) {
IUserControlDesignerAccessor designerAccessor = (IUserControlDesignerAccessor)o;
designerAccessor.TagName = TagName;
if (_innerText != null) {
designerAccessor.InnerText = _innerText;
}
}
return o;
}
///
public override bool NeedsTagInnerText() {
// in design-mode, we need to hang on to the inner text
return InDesigner;
}
///
public override void SetTagInnerText(string text) {
Debug.Assert(InDesigner == true, "Should only be called in design-mode!");
_innerText = text;
}
}
///
/// Default ControlBuilder used to parse user controls files.
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class FileLevelUserControlBuilder: RootBuilder {
}
///
/// This class is not marked as abstract, because the VS designer
/// needs to instantiate it when opening .ascx files
///
[
ControlBuilder(typeof(UserControlControlBuilder)),
DefaultEvent("Load"),
Designer("System.Web.UI.Design.UserControlDesigner, " + AssemblyRef.SystemDesign, typeof(IDesigner)),
Designer("Microsoft.VisualStudio.Web.WebForms.WebFormDesigner, " + AssemblyRef.MicrosoftVisualStudioWeb, typeof(IRootDesigner)),
DesignerCategory("ASPXCodeBehind"),
DesignerSerializer("Microsoft.VisualStudio.Web.WebForms.WebFormCodeDomSerializer, " + AssemblyRef.MicrosoftVisualStudioWeb, "System.ComponentModel.Design.Serialization.TypeCodeDomSerializer, " + AssemblyRef.SystemDesign),
ParseChildren(true),
ToolboxItem(false)
]
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class UserControl : TemplateControl, IAttributeAccessor, INonBindingContainer, IUserControlDesignerAccessor {
private StateBag attributeStorage;
private AttributeCollection attributes;
private bool _fUserControlInitialized;
///
/// Gets the collection of attribute name/value pairs expressed on a UserControl but
/// not supported by the control's strongly typed properties.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public AttributeCollection Attributes {
get {
if (attributes == null) {
if (attributeStorage == null) {
attributeStorage = new StateBag(true);
if (IsTrackingViewState) {
attributeStorage.TrackViewState();
}
}
attributes = new AttributeCollection(attributeStorage);
}
return attributes;
}
}
// Delegate most things to the Page
///
/// Gets the object provided by
/// the HTTP Runtime.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpApplicationState Application { get { return Page.Application;} }
/*
* Trace context for output of useful information to page during development
*/
///
/// Indicates the object for the current Web
/// request. Tracing tracks and presents the execution details about a Web request.
/// For trace data to be visible in a rendered page, you must turn tracing on for
/// that page. This property is read-only.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public TraceContext Trace { get { return Page.Trace; } }
///
///
/// Gets the object provided by the HTTP Runtime, which
/// allows developers to access data from incoming HTTP requests.
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpRequest Request { get { return Page.Request; } }
///
/// Gets the object provided by the HTTP Runtime, which
/// allows developers to send HTTP response data to a client browser.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpResponse Response { get { return Page.Response; } }
///
/// Gets the ASP-compatible object.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpServerUtility Server { get { return Page.Server; } }
/*
* Cache intrinsic
*/
///
/// Retrieves a
/// object in which to store the user control's data for
/// subsequent requests. This property is read-only.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public Cache Cache { get { return Page.Cache; } }
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public ControlCachePolicy CachePolicy {
get {
// Check if we're inside a PartialCachingControl
BasePartialCachingControl pcc = Parent as BasePartialCachingControl;
// If so, return its CachePolicy
if (pcc != null)
return pcc.CachePolicy;
// Otherwise, return a stub, which returns SupportsCaching==false and throws
// on everything else.
return ControlCachePolicy.GetCachePolicyStub();
}
}
///
/// Gets a value indicating whether the user control is being loaded in response to a
/// client postback, or if it is being loaded and accessed for the first time.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public bool IsPostBack { get { return Page.IsPostBack; } }
///
/// Gets the object provided by the HTTP Runtime.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpSessionState Session { get { return Page.Session; } }
/*
* Performs intialization of the control required by the designer.
*/
///
/// Performs any initialization of the control that is required by RAD designers.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void DesignerInitialize() {
InitRecursive(null);
}
///
/// [To be supplied.]
///
protected internal override void OnInit(EventArgs e) {
// We want to avoid calling this when the user control is being used in the designer,
// regardless of whether it is a top-level control (DesignMode == true),
// or if its inside another control in design-mode (Page.Site.DesignMode == true)
bool designTime = DesignMode;
if (designTime == false) {
if ((Page != null) && (Page.Site != null)) {
designTime = Page.Site.DesignMode;
}
}
if (designTime == false) {
InitializeAsUserControlInternal();
}
base.OnInit(e);
}
/*
* Called on declarative controls to initialize them correctly
*/
///
/// Initializes the object. Since there are some
/// differences between pages and user controls, this method makes sure that the
/// user control is initialized properly.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void InitializeAsUserControl(Page page) {
_page = page;
InitializeAsUserControlInternal();
}
internal void InitializeAsUserControlInternal() {
// Make sure we only do this once
if (_fUserControlInitialized)
return;
_fUserControlInitialized = true;
// Hook up any automatic handler we may find (e.g. Page_Load)
HookUpAutomaticHandlers();
// Initialize the object and instantiate all the controls defined in the ascx file
FrameworkInitialize();
}
protected override void LoadViewState(object savedState) {
if (savedState != null) {
Pair myState = (Pair)savedState;
base.LoadViewState(myState.First);
if (myState.Second != null) {
if (attributeStorage == null) {
attributeStorage = new StateBag(true);
attributeStorage.TrackViewState();
}
attributeStorage.LoadViewState(myState.Second);
}
}
}
protected override object SaveViewState() {
Pair myState = null;
object baseState = base.SaveViewState();
object attrState = null;
if (attributeStorage != null) {
attrState = attributeStorage.SaveViewState();
}
if (baseState != null || attrState != null) {
myState = new Pair(baseState, attrState);
}
return myState;
}
///
///
/// Returns the attribute value of the UserControl having
/// the specified attribute name.
///
string IAttributeAccessor.GetAttribute(string name) {
return ((attributeStorage != null) ? (string)attributeStorage[name] : null);
}
///
///
/// Sets an attribute of the UserControl with the specified
/// name and value.
///
void IAttributeAccessor.SetAttribute(string name, string value) {
Attributes[name] = value;
}
/*
* Map virtual path (absolute or relative) to physical path
*/
///
/// Assigns a virtual path, either absolute or relative, to a physical path.
///
public string MapPath(string virtualPath) {
return Request.MapPath(VirtualPath.CreateAllowNull(virtualPath), TemplateControlVirtualDirectory,
true/*allowCrossAppMapping*/);
}
///
string IUserControlDesignerAccessor.TagName {
get {
string text = (string)ViewState["!DesignTimeTagName"];
if (text == null) {
return String.Empty;
}
return text;
}
set {
ViewState["!DesignTimeTagName"] = value;
}
}
///
string IUserControlDesignerAccessor.InnerText {
get {
string text = (string)ViewState["!DesignTimeInnerText"];
if (text == null) {
return String.Empty;
}
return text;
}
set {
ViewState["!DesignTimeInnerText"] = value;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Page class definition
*
* Copyright (c) 1998 Microsoft Corporation
*/
namespace System.Web.UI {
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Web.SessionState;
using System.Web.Caching;
using System.Security.Permissions;
using System.Web.Util;
///
/// The ControlBuilder associated with a UserControl. If you want a custom ControlBuilder for your
/// derived UserControl, you should derive it from UserControlControlBuilder.
///
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class UserControlControlBuilder : ControlBuilder {
private string _innerText;
///
public override object BuildObject() {
object o = base.BuildObject();
if (InDesigner) {
IUserControlDesignerAccessor designerAccessor = (IUserControlDesignerAccessor)o;
designerAccessor.TagName = TagName;
if (_innerText != null) {
designerAccessor.InnerText = _innerText;
}
}
return o;
}
///
public override bool NeedsTagInnerText() {
// in design-mode, we need to hang on to the inner text
return InDesigner;
}
///
public override void SetTagInnerText(string text) {
Debug.Assert(InDesigner == true, "Should only be called in design-mode!");
_innerText = text;
}
}
///
/// Default ControlBuilder used to parse user controls files.
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class FileLevelUserControlBuilder: RootBuilder {
}
///
/// This class is not marked as abstract, because the VS designer
/// needs to instantiate it when opening .ascx files
///
[
ControlBuilder(typeof(UserControlControlBuilder)),
DefaultEvent("Load"),
Designer("System.Web.UI.Design.UserControlDesigner, " + AssemblyRef.SystemDesign, typeof(IDesigner)),
Designer("Microsoft.VisualStudio.Web.WebForms.WebFormDesigner, " + AssemblyRef.MicrosoftVisualStudioWeb, typeof(IRootDesigner)),
DesignerCategory("ASPXCodeBehind"),
DesignerSerializer("Microsoft.VisualStudio.Web.WebForms.WebFormCodeDomSerializer, " + AssemblyRef.MicrosoftVisualStudioWeb, "System.ComponentModel.Design.Serialization.TypeCodeDomSerializer, " + AssemblyRef.SystemDesign),
ParseChildren(true),
ToolboxItem(false)
]
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class UserControl : TemplateControl, IAttributeAccessor, INonBindingContainer, IUserControlDesignerAccessor {
private StateBag attributeStorage;
private AttributeCollection attributes;
private bool _fUserControlInitialized;
///
/// Gets the collection of attribute name/value pairs expressed on a UserControl but
/// not supported by the control's strongly typed properties.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public AttributeCollection Attributes {
get {
if (attributes == null) {
if (attributeStorage == null) {
attributeStorage = new StateBag(true);
if (IsTrackingViewState) {
attributeStorage.TrackViewState();
}
}
attributes = new AttributeCollection(attributeStorage);
}
return attributes;
}
}
// Delegate most things to the Page
///
/// Gets the object provided by
/// the HTTP Runtime.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpApplicationState Application { get { return Page.Application;} }
/*
* Trace context for output of useful information to page during development
*/
///
/// Indicates the object for the current Web
/// request. Tracing tracks and presents the execution details about a Web request.
/// For trace data to be visible in a rendered page, you must turn tracing on for
/// that page. This property is read-only.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public TraceContext Trace { get { return Page.Trace; } }
///
///
/// Gets the object provided by the HTTP Runtime, which
/// allows developers to access data from incoming HTTP requests.
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpRequest Request { get { return Page.Request; } }
///
/// Gets the object provided by the HTTP Runtime, which
/// allows developers to send HTTP response data to a client browser.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpResponse Response { get { return Page.Response; } }
///
/// Gets the ASP-compatible object.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpServerUtility Server { get { return Page.Server; } }
/*
* Cache intrinsic
*/
///
/// Retrieves a
/// object in which to store the user control's data for
/// subsequent requests. This property is read-only.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public Cache Cache { get { return Page.Cache; } }
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public ControlCachePolicy CachePolicy {
get {
// Check if we're inside a PartialCachingControl
BasePartialCachingControl pcc = Parent as BasePartialCachingControl;
// If so, return its CachePolicy
if (pcc != null)
return pcc.CachePolicy;
// Otherwise, return a stub, which returns SupportsCaching==false and throws
// on everything else.
return ControlCachePolicy.GetCachePolicyStub();
}
}
///
/// Gets a value indicating whether the user control is being loaded in response to a
/// client postback, or if it is being loaded and accessed for the first time.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public bool IsPostBack { get { return Page.IsPostBack; } }
///
/// Gets the object provided by the HTTP Runtime.
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public HttpSessionState Session { get { return Page.Session; } }
/*
* Performs intialization of the control required by the designer.
*/
///
/// Performs any initialization of the control that is required by RAD designers.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void DesignerInitialize() {
InitRecursive(null);
}
///
/// [To be supplied.]
///
protected internal override void OnInit(EventArgs e) {
// We want to avoid calling this when the user control is being used in the designer,
// regardless of whether it is a top-level control (DesignMode == true),
// or if its inside another control in design-mode (Page.Site.DesignMode == true)
bool designTime = DesignMode;
if (designTime == false) {
if ((Page != null) && (Page.Site != null)) {
designTime = Page.Site.DesignMode;
}
}
if (designTime == false) {
InitializeAsUserControlInternal();
}
base.OnInit(e);
}
/*
* Called on declarative controls to initialize them correctly
*/
///
/// Initializes the object. Since there are some
/// differences between pages and user controls, this method makes sure that the
/// user control is initialized properly.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void InitializeAsUserControl(Page page) {
_page = page;
InitializeAsUserControlInternal();
}
internal void InitializeAsUserControlInternal() {
// Make sure we only do this once
if (_fUserControlInitialized)
return;
_fUserControlInitialized = true;
// Hook up any automatic handler we may find (e.g. Page_Load)
HookUpAutomaticHandlers();
// Initialize the object and instantiate all the controls defined in the ascx file
FrameworkInitialize();
}
protected override void LoadViewState(object savedState) {
if (savedState != null) {
Pair myState = (Pair)savedState;
base.LoadViewState(myState.First);
if (myState.Second != null) {
if (attributeStorage == null) {
attributeStorage = new StateBag(true);
attributeStorage.TrackViewState();
}
attributeStorage.LoadViewState(myState.Second);
}
}
}
protected override object SaveViewState() {
Pair myState = null;
object baseState = base.SaveViewState();
object attrState = null;
if (attributeStorage != null) {
attrState = attributeStorage.SaveViewState();
}
if (baseState != null || attrState != null) {
myState = new Pair(baseState, attrState);
}
return myState;
}
///
///
/// Returns the attribute value of the UserControl having
/// the specified attribute name.
///
string IAttributeAccessor.GetAttribute(string name) {
return ((attributeStorage != null) ? (string)attributeStorage[name] : null);
}
///
///
/// Sets an attribute of the UserControl with the specified
/// name and value.
///
void IAttributeAccessor.SetAttribute(string name, string value) {
Attributes[name] = value;
}
/*
* Map virtual path (absolute or relative) to physical path
*/
///
/// Assigns a virtual path, either absolute or relative, to a physical path.
///
public string MapPath(string virtualPath) {
return Request.MapPath(VirtualPath.CreateAllowNull(virtualPath), TemplateControlVirtualDirectory,
true/*allowCrossAppMapping*/);
}
///
string IUserControlDesignerAccessor.TagName {
get {
string text = (string)ViewState["!DesignTimeTagName"];
if (text == null) {
return String.Empty;
}
return text;
}
set {
ViewState["!DesignTimeTagName"] = value;
}
}
///
string IUserControlDesignerAccessor.InnerText {
get {
string text = (string)ViewState["!DesignTimeInnerText"];
if (text == null) {
return String.Empty;
}
return text;
}
set {
ViewState["!DesignTimeInnerText"] = value;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UserValidatedEventArgs.cs
- SqlTransaction.cs
- SQLMoney.cs
- PointHitTestParameters.cs
- GlyphTypeface.cs
- ISessionStateStore.cs
- HttpUnhandledOperationInvoker.cs
- KeyedCollection.cs
- Frame.cs
- HtmlHistory.cs
- RewritingSimplifier.cs
- BaseAppDomainProtocolHandler.cs
- XXXInfos.cs
- JsonServiceDocumentSerializer.cs
- RemoveFromCollection.cs
- ConnectionConsumerAttribute.cs
- HebrewCalendar.cs
- StatusStrip.cs
- EncryptedPackageFilter.cs
- SendDesigner.xaml.cs
- counter.cs
- SqlProviderUtilities.cs
- PerformanceCounterPermission.cs
- SigningCredentials.cs
- AdapterDictionary.cs
- XmlDictionaryReaderQuotas.cs
- log.cs
- SolidColorBrush.cs
- TypeTypeConverter.cs
- Clause.cs
- SqlGatherConsumedAliases.cs
- WebPartMovingEventArgs.cs
- Page.cs
- DocumentViewerAutomationPeer.cs
- RectAnimationBase.cs
- CalendarTable.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Triplet.cs
- UInt16.cs
- TemplatedAdorner.cs
- OrderPreservingMergeHelper.cs
- TrackBarRenderer.cs
- RootBrowserWindow.cs
- TypeLibraryHelper.cs
- _AutoWebProxyScriptWrapper.cs
- XPathNodeIterator.cs
- SerialPinChanges.cs
- ConfigurationProviderException.cs
- UITypeEditor.cs
- PersianCalendar.cs
- ControlPropertyNameConverter.cs
- ConvertTextFrag.cs
- PrimarySelectionGlyph.cs
- ExpandableObjectConverter.cs
- SiteMapSection.cs
- DbgCompiler.cs
- WriteableBitmap.cs
- SelectorItemAutomationPeer.cs
- FixedSOMPageConstructor.cs
- basevalidator.cs
- TextEncodedRawTextWriter.cs
- SqlUnionizer.cs
- Decoder.cs
- Normalization.cs
- WebProxyScriptElement.cs
- GrammarBuilderBase.cs
- ListViewHitTestInfo.cs
- FontConverter.cs
- EngineSiteSapi.cs
- DetailsViewRowCollection.cs
- MembershipUser.cs
- DayRenderEvent.cs
- Int16AnimationBase.cs
- Fx.cs
- XPathAxisIterator.cs
- AutomationPropertyInfo.cs
- DataGridAddNewRow.cs
- DataTableExtensions.cs
- DataSourceExpressionCollection.cs
- KeyedHashAlgorithm.cs
- SchemaLookupTable.cs
- RepeatBehavior.cs
- LiteralTextContainerControlBuilder.cs
- RootAction.cs
- InvalidPropValue.cs
- AsymmetricSignatureFormatter.cs
- ObjectListCommandCollection.cs
- AttachedProperty.cs
- BitmapScalingModeValidation.cs
- RenameRuleObjectDialog.Designer.cs
- TableLayoutCellPaintEventArgs.cs
- LocalizationCodeDomSerializer.cs
- ProvideValueServiceProvider.cs
- AssemblyInfo.cs
- AbandonedMutexException.cs
- SchemaSetCompiler.cs
- ConfigurationConverterBase.cs
- DataRow.cs
- HttpHandler.cs
- _NestedMultipleAsyncResult.cs