X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Web%2FSystem.Web.UI%2FControl.cs;h=229d46dcc897e92e94a5de9a14cc968e7edaba92;hb=61402fe1a26c33af69cfc74ffabd728020ebf6f7;hp=fa0785ecd4feaac5a79c24de680ad45c82bd9325;hpb=095823b134bc1f0b2cc8aa1ec5a55e6ec4148eba;p=mono.git diff --git a/mcs/class/System.Web/System.Web.UI/Control.cs b/mcs/class/System.Web/System.Web.UI/Control.cs index fa0785ecd4f..229d46dcc89 100644 --- a/mcs/class/System.Web/System.Web.UI/Control.cs +++ b/mcs/class/System.Web/System.Web.UI/Control.cs @@ -115,6 +115,8 @@ namespace System.Web.UI private RenderMethod _renderMethodDelegate = null; private bool autoID = true; private bool creatingControls = false; + private bool bindingContainer = true; + private bool autoEventWireup = true; private DataBindingCollection dataBindings = null; @@ -127,7 +129,7 @@ namespace System.Web.UI { get { Control container = NamingContainer; - if (_isNamingContainer) + if (!container.bindingContainer) container = container.BindingContainer; return container; } @@ -220,12 +222,9 @@ namespace System.Web.UI _site = value; } } - public virtual string TemplateSourceDirectory - { - get - { - return Context.Request.ApplicationPath; //TODO: Dont think this is right. - } + + public virtual string TemplateSourceDirectory { + get { return (_parent == null) ? String.Empty : _parent.TemplateSourceDirectory; } } [MonoTODO] @@ -322,6 +321,7 @@ namespace System.Web.UI return _viewState; } } + protected virtual bool ViewStateIgnoresCase { get { @@ -329,6 +329,16 @@ namespace System.Web.UI } } + internal bool AutoEventWireup { + get { return autoEventWireup; } + set { autoEventWireup = value; } + } + + internal void SetBindingContainer (bool isBC) + { + bindingContainer = isBC; + } + private int defaultNumberID; protected internal virtual void AddedControl (Control control, int index) { @@ -345,7 +355,7 @@ namespace System.Web.UI control._namingContainer = namingContainer; if (control.AutoID == true && control.ID == null) - control.ID = "_ctrl_" + defaultNumberID++; + control.ID = ID + "_ctrl_" + defaultNumberID++; } protected virtual void AddParsedSubObject(object obj) //DIT @@ -410,13 +420,13 @@ namespace System.Web.UI ViewState.LoadViewState (savedState); } - [MonoTODO] + [MonoTODO("Secure?")] protected string MapPathSecure(string virtualPath) { - //TODO: Need to read up on security+web. - //Return the same path. So AdRotator can read its config file. - return virtualPath; + string combined = UrlUtils.Combine (TemplateSourceDirectory, virtualPath); + return Context.Request.MapPath (combined); } + protected virtual bool OnBubbleEvent(object source, EventArgs args) //DIT { return false; @@ -637,8 +647,15 @@ namespace System.Web.UI protected void PreRenderRecursiveInternal() { - OnPreRender(EventArgs.Empty); - if (_controls != null) foreach (Control c in _controls) c.PreRenderRecursiveInternal(); + if (_visible) { + EnsureChildControls (); + OnPreRender (EventArgs.Empty); + if (_controls == null) + return; + + foreach (Control c in _controls) + c.PreRenderRecursiveInternal (); + } } protected void InitRecursive(Control namingContainer) @@ -661,7 +678,7 @@ namespace System.Web.UI controlList = new ArrayList (); controlStates = new ArrayList (); } - controlList.Add (ctrl); + controlList.Add (ctrl.ID); controlStates.Add (ctrl.SaveViewStateRecursive ()); } @@ -682,8 +699,9 @@ namespace System.Web.UI ArrayList controlStates = savedInfo.Third as ArrayList; int nControls = controlList.Count; for (int i = 0; i < nControls; i++) { - if (controlStates != null) - Controls [i].LoadViewStateRecursive (controlStates [i]); + Control c = FindControl ((string) controlList [i]); + if (c != null && controlStates != null) + c.LoadViewStateRecursive (controlStates [i]); } }