2 // System.Web.UI.UserControl.cs
5 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 // Andreas Nahr (ClassDevelopment@A-SoftTech.com)
8 // (C) 2002 Ximian, Inc (http://www.ximian.com)
11 using System.ComponentModel;
12 using System.ComponentModel.Design;
13 using System.ComponentModel.Design.Serialization;
14 using System.Web.Caching;
15 using System.Web.SessionState;
17 namespace System.Web.UI
19 [ControlBuilder (typeof (UserControlControlBuilder))]
20 [DefaultEvent ("Load"), DesignerCategory ("ASPXCodeBehind")]
21 [ToolboxItem (false), ParseChildren (true)]
22 [Designer ("System.Web.UI.Design.UserControlDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]
23 [Designer ("Microsoft.VSDesigner.WebForms.WebFormDesigner, " + Consts.AssemblyMicrosoft_VSDesigner, typeof (IRootDesigner))]
24 [RootDesignerSerializer ("Microsoft.VSDesigner.WebForms.RootCodeDomSerializer, " + Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.Serialization.CodeDomSerializer, " + Consts.AssemblySystem_Design, true)]
25 public class UserControl : TemplateControl, IAttributeAccessor, IUserControlDesignerAccessor
27 private bool initialized;
28 private AttributeCollection attributes;
29 private StateBag attrBag;
36 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
38 public HttpApplicationState Application
48 private void EnsureAttributes ()
50 if (attributes == null) {
51 attrBag = new StateBag (true);
52 if (IsTrackingViewState)
53 attrBag.TrackViewState ();
54 attributes = new AttributeCollection (attrBag);
58 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
60 public AttributeCollection Attributes
67 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
79 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
81 public bool IsPostBack
91 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
93 public HttpRequest Request
103 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
105 public HttpResponse Response
115 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
117 public HttpServerUtility Server
127 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
129 public HttpSessionState Session
139 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
141 public TraceContext Trace
151 [EditorBrowsable (EditorBrowsableState.Never)]
152 public void DesignerInitialize ()
154 InitRecursive (null);
157 [EditorBrowsable (EditorBrowsableState.Never)]
158 public void InitializeAsUserControl (Page page)
164 WireupAutomaticEvents ();
165 FrameworkInitialize ();
168 public string MapPath (string virtualPath)
170 return Request.MapPath (virtualPath, TemplateSourceDirectory, true);
173 protected override void LoadViewState (object savedState)
175 if (savedState != null) {
176 Pair p = (Pair) savedState;
177 base.LoadViewState (p.First);
178 if (p.Second != null) {
180 attrBag.LoadViewState (p.Second);
186 protected override void OnInit (EventArgs e)
188 InitializeAsUserControl (Page);
193 protected override object SaveViewState ()
195 object baseState = base.SaveViewState();
196 object attrState = null;
197 if (attributes != null)
198 attrState = attrBag.SaveViewState ();
199 if (baseState == null && attrState == null)
201 return new Pair (baseState, attrState);
204 string IAttributeAccessor.GetAttribute (string name)
206 if (attributes == null)
208 return attributes [name];
211 void IAttributeAccessor.SetAttribute (string name, string value)
214 Attributes [name] = value;
217 string IUserControlDesignerAccessor.InnerText
220 string innerText = ((string) ViewState["!DesignTimeInnerText"]);
221 if (innerText == null)
225 set { ViewState["!DesignTimeInnerText"] = value; }
228 string IUserControlDesignerAccessor.TagName
231 string innerTag = ((string) ViewState["!DesignTimeTagName"]);
232 if (innerTag == null)
236 set { ViewState["!DesignTimeTagName"] = value; }