ソースを参照

cache ScriptManager; implement UpdatePanel.IsInPartialRendering

svn path=/trunk/mcs/; revision=82735
Konstantin Triger 18 年 前
コミット
29ee4a276b

+ 8 - 4
mcs/class/System.Web.Extensions/System.Web.UI/ScriptManagerProxy.cs

@@ -40,6 +40,8 @@ namespace System.Web.UI
 	[NonVisualControl]
 	public class ScriptManagerProxy : Control
 	{
+		ScriptManager _scriptManager;
+
 		[Category ("Behavior")]
 		[MergableProperty (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
@@ -80,10 +82,12 @@ namespace System.Web.UI
 
 		ScriptManager ScriptManager {
 			get {
-				ScriptManager manager = ScriptManager.GetCurrent (Page);
-				if (manager == null)
-					throw new InvalidOperationException (String.Format ("The control with ID '{0}' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.", ID));
-				return manager;
+				if (_scriptManager == null) {
+					_scriptManager = ScriptManager.GetCurrent (Page);
+					if (_scriptManager == null)
+						throw new InvalidOperationException (String.Format ("The control with ID '{0}' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.", ID));
+				}
+				return _scriptManager;
 			}
 		}
 

+ 8 - 5
mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanel.cs

@@ -51,6 +51,7 @@ namespace System.Web.UI
 		bool _requiresUpdate = false;
 		UpdatePanelTriggerCollection _triggers;
 		UpdatePanelRenderMode _renderMode = UpdatePanelRenderMode.Block;
+		ScriptManager _scriptManager;
 
 		[Category ("Behavior")]
 		[DefaultValue (true)]
@@ -95,7 +96,7 @@ namespace System.Web.UI
 		[Browsable (false)]
 		public bool IsInPartialRendering {
 			get {
-				throw new NotImplementedException ();
+				return ScriptManager.IsInPartialRendering;
 			}
 		}
 
@@ -117,10 +118,12 @@ namespace System.Web.UI
 
 		internal ScriptManager ScriptManager {
 			get {
-				ScriptManager manager = ScriptManager.GetCurrent (Page);
-				if (manager == null)
-					throw new InvalidOperationException (String.Format ("The control with ID '{0}' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.", ID));
-				return manager;
+				if (_scriptManager == null) {
+					_scriptManager = ScriptManager.GetCurrent (Page);
+					if (_scriptManager == null)
+						throw new InvalidOperationException (String.Format ("The control with ID '{0}' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.", ID));
+				}
+				return _scriptManager;
 			}
 		}