瀏覽代碼

refactoring implementing Page.GetDataItem()

svn path=/trunk/mcs/; revision=59347
Konstantin Triger 20 年之前
父節點
當前提交
6c6fee3811

+ 4 - 0
mcs/class/System.Web/System.Web.UI/ChangeLog

@@ -1,3 +1,7 @@
+006-04-11 Konstantin Triger <[email protected]>
+
+	* Page.cs, TemplateControl.cs: refactoring implementing Page.GetDataItem().
+
 2006-04-10  Chris Toshok  <[email protected]>
 
 	* PageThemeFileParser.cs (AddDirective): allow Register directives

+ 24 - 0
mcs/class/System.Web/System.Web.UI/Page.cs

@@ -1706,6 +1706,30 @@ public class Page : TemplateControl, IHttpHandler
 	internal PageTheme StyleSheetPageTheme {
 		get { return _styleSheetPageTheme; }
 	}
+
+	Stack dataItemCtx;
+	
+	internal void PushDataItemContext (object o) {
+		if (dataItemCtx == null)
+			dataItemCtx = new Stack ();
+		
+		dataItemCtx.Push (o);
+	}
+	
+	internal void PopDataItemContext () {
+		if (dataItemCtx == null)
+			throw new InvalidOperationException ();
+		
+		dataItemCtx.Pop ();
+	}
+	
+	public object GetDataItem() {
+		if (dataItemCtx == null || dataItemCtx.Count == 0)
+			throw new InvalidOperationException ("No data item");
+		
+		return dataItemCtx.Peek ();
+	}
+
 	#endif
 }
 }

+ 5 - 33
mcs/class/System.Web/System.Web.UI/TemplateControl.cs

@@ -305,57 +305,29 @@ namespace System.Web.UI {
 		}
 
 #if NET_2_0
-
-		Stack dataItemCtx;
-	
-		internal void PushDataItemContext (object o)
-		{
-			if (dataItemCtx == null)
-				dataItemCtx = new Stack ();
-		
-			dataItemCtx.Push (o);
-		}
-		
-		internal void PopDataItemContext ()
-		{
-			if (dataItemCtx == null)
-				throw new InvalidOperationException ();
-		
-			dataItemCtx.Pop ();
-		}
-	
-		internal object CurrentDataItem {
-			get {
-				if (dataItemCtx == null || dataItemCtx.Count == 0)
-					throw new InvalidOperationException ("No data item");
-			
-				return dataItemCtx.Peek ();
-			}
-		}
-	
 		protected object Eval (string expression)
 		{
-			return DataBinder.Eval (CurrentDataItem, expression);
+			return DataBinder.Eval (Page.GetDataItem(), expression);
 		}
 	
 		protected string Eval (string expression, string format)
 		{
-			return DataBinder.Eval (CurrentDataItem, expression, format);
+			return DataBinder.Eval (Page.GetDataItem(), expression, format);
 		}
 	
 		protected object XPath (string xpathexpression)
 		{
-			return XPathBinder.Eval (CurrentDataItem, xpathexpression);
+			return XPathBinder.Eval (Page.GetDataItem(), xpathexpression);
 		}
 	
 		protected string XPath (string xpathexpression, string format)
 		{
-			return XPathBinder.Eval (CurrentDataItem, xpathexpression, format);
+			return XPathBinder.Eval (Page.GetDataItem(), xpathexpression, format);
 		}
 	
 		protected IEnumerable XPathSelect (string xpathexpression)
 		{
-			return XPathBinder.Select (CurrentDataItem, xpathexpression);
+			return XPathBinder.Select (Page.GetDataItem(), xpathexpression);
 		}
 
 		// IFilterResolutionService