[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mono-devel-list
Subject:    [Mono-dev] Control.UniqueID Please review
From:       "Adar Wesley" <adarw () mainsoft ! com>
Date:       2007-01-29 14:18:38
Message-ID: DA63C6E8B207E748B20D46DFED7B772D03B7F495 () dhost002-45 ! dex002 ! intermedia ! net
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi All,

 

Please find attached a patch that fixes the implementation of
'Control.UniqueID' to

use Control.IdSeparator and therefore be compatible with MS.NET 2.0.

 

This change also required updating some of the tests that were using the
UniqueID

or ClientID as strings.

 

Since this is such a low level API in System.Web, I am submitting it
here for review

before committing.

 

Please let me know if you see any problem with this implementation or if
I can commit.

 

Thanks,

 

---

Adar Wesley

Mainsoft

 


[Attachment #5 (text/html)]

<html xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:Arial;
	color:windowtext;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
	{page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hi All,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Please find attached a patch that fixes the implementation
of &#8216;Control.UniqueID&#8217; to<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>use Control.IdSeparator and therefore be compatible with
MS.NET 2.0.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>This change also required updating some of the tests that
were using the UniqueID<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>or ClientID as strings.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Since this is such a low level API in System.Web, I am
submitting it here for review<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>before committing.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Please let me know if you see any problem with this
implementation or if I can commit.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>---<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Adar Wesley<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Mainsoft<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>


["Control.UniqueID.Patch" (application/octet-stream)]

Index: System.Web.UI/Control.cs
===================================================================
--- System.Web.UI/Control.cs	(revision 71848)
+++ System.Web.UI/Control.cs	(working copy)
@@ -136,7 +136,11 @@
 		{
 			defaultNameArray = new string [100];
 			for (int i = 0 ; i < 100 ; i++)
+#if NET_2_0
+				defaultNameArray [i] = String.Format("ctl{0:D2}", i);
+#else
 				defaultNameArray [i] = "_ctl" + i;
+#endif
 		}
 
                 public Control()
@@ -203,7 +207,11 @@
 				string client = UniqueID;
 
 				if (client != null)
+#if NET_2_0
+					client = client.Replace (IdSeparator, ClientIDSeparator);
+#else
 					client = client.Replace (':', ClientIDSeparator);
+#endif
 				
 				stateMask |= ID_SET;
 				return client;
@@ -454,7 +462,11 @@
 					return uniqueID;
 				}
 
+#if NET_2_0
+				uniqueID = prefix + IdSeparator + _userId;
+#else
 				uniqueID = prefix + ":" + _userId;
+#endif
 				return uniqueID;
                         }
                 }
@@ -584,7 +596,11 @@
 		{
 			string defaultName;
 			if (defaultNumberID > 99) {
+#if NET_2_0
+				defaultName = "ctl" + defaultNumberID++;
+#else
 				defaultName = "_ctl" + defaultNumberID++;
+#endif
 			} else {
 				defaultName = defaultNameArray [defaultNumberID++];
 			}
@@ -790,17 +806,20 @@
 
 			if (!HasControls ())
 				return null;
-
-			int colon = id.IndexOf (':', pathOffset);
-			if (colon == -1)
+#if NET_2_0
+			int separatorIdx = id.IndexOf (IdSeparator, pathOffset);
+#else
+			int separatorIdx = id.IndexOf (':', pathOffset);
+#endif
+			if (separatorIdx == -1)
 				return LookForControlByName (id.Substring (pathOffset));
 			
-			string idfound = id.Substring (pathOffset, colon - pathOffset);
+			string idfound = id.Substring (pathOffset, separatorIdx - pathOffset);
 			namingContainer = LookForControlByName (idfound);
 			if (namingContainer == null)
 				return null;
 
-			return namingContainer.FindControl (id, colon + 1);
+			return namingContainer.FindControl (id, separatorIdx + 1);
                 }
 
                 protected virtual void LoadViewState(object savedState)
Index: Test/System.Web.UI.HtmlControls/HtmlTextAreaTest.cs
===================================================================
--- Test/System.Web.UI.HtmlControls/HtmlTextAreaTest.cs	(revision 71867)
+++ Test/System.Web.UI.HtmlControls/HtmlTextAreaTest.cs	(working copy)
@@ -211,7 +211,12 @@
 			ctrl.Controls.Add (ta);
 			ta.Name = "mono";
 			ta.ID = "go";
-			Assert.AreEqual (" name=\"UC:go\" id=\"UC_go\"", ta.RenderAttributes ());
+#if NET_2_0
+			string expected = " name=\"UC$go\" id=\"UC_go\"";
+#else
+			string expected = " name=\"UC:go\" id=\"UC_go\"";
+#endif
+			Assert.AreEqual (expected, ta.RenderAttributes ());
 		}
 
 		[Test]
Index: Test/System.Web.UI.WebControls/DetailsViewTest.cs
===================================================================
--- Test/System.Web.UI.WebControls/DetailsViewTest.cs	(revision 71848)
+++ Test/System.Web.UI.WebControls/DetailsViewTest.cs	(working copy)
@@ -1767,15 +1767,15 @@
 #else
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("DetailsView1:_ctl1c");
-			fr.Controls.Add ("DetailsView1:_ctl2c");
-			fr.Controls.Add ("DetailsView1:_ctl3c");
+			fr.Controls.Add ("DetailsView1$ctl01c");
+			fr.Controls.Add ("DetailsView1$ctl02c");
+			fr.Controls.Add ("DetailsView1$ctl03c");
 
-			fr.Controls ["__EVENTTARGET"].Value = "DetailsView1:_ctl4c";
+			fr.Controls ["__EVENTTARGET"].Value = "DetailsView1$ctl04c";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["DetailsView1:_ctl1c"].Value = "123";
-			fr.Controls ["DetailsView1:_ctl2c"].Value = "123";
-			fr.Controls ["DetailsView1:_ctl3c"].Value = "123";
+			fr.Controls ["DetailsView1$ctl01c"].Value = "123";
+			fr.Controls ["DetailsView1$ctl02c"].Value = "123";
+			fr.Controls ["DetailsView1$ctl03c"].Value = "123";
 #endif
 			t.Request = fr;			
 			t.Run ();
@@ -1925,13 +1925,13 @@
 #else
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("DetailsView1:_ctl1c");
-			fr.Controls.Add ("DetailsView1:_ctl2c");
+			fr.Controls.Add ("DetailsView1$ctl01c");
+			fr.Controls.Add ("DetailsView1$ctl02c");
 
-			fr.Controls ["__EVENTTARGET"].Value = "DetailsView1:_ctl3c";
+			fr.Controls ["__EVENTTARGET"].Value = "DetailsView1$ctl03c";
 			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["DetailsView1:_ctl1c"].Value = "1";
-			fr.Controls ["DetailsView1:_ctl2c"].Value = "2";
+			fr.Controls ["DetailsView1$ctl01c"].Value = "1";
+			fr.Controls ["DetailsView1$ctl02c"].Value = "2";
 #endif
 			t.Request = fr;
 			t.Run ();
@@ -2768,3 +2768,4 @@
 
 
 
+
Index: Test/System.Web.UI.WebControls/FormViewTest.cs
===================================================================
--- Test/System.Web.UI.WebControls/FormViewTest.cs	(revision 71848)
+++ Test/System.Web.UI.WebControls/FormViewTest.cs	(working copy)
@@ -1604,7 +1604,7 @@
 			FormRequest fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$EditButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			t.Request = fr;
 			pageHTML = t.Run ();
@@ -1635,12 +1635,12 @@
 			fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("FormView1:FNameEdit");
-			fr.Controls.Add ("FormView1:LNameEdit");
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:UpdateButton";
+			fr.Controls.Add ("FormView1$FNameEdit");
+			fr.Controls.Add ("FormView1$LNameEdit");
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$UpdateButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";			
-			fr.Controls["FormView1:FNameEdit"].Value = "Merav";
-			fr.Controls["FormView1:LNameEdit"].Value = "Test";			
+			fr.Controls["FormView1$FNameEdit"].Value = "Merav";
+			fr.Controls["FormView1$LNameEdit"].Value = "Test";			
 			t.Request = fr;
 			pageHTML = t.Run ();
 			newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf \
("end") - pageHTML.IndexOf ("start") - 5); @@ -1671,7 +1671,7 @@
 			fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$EditButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";			
 			t.Request = fr;
 			pageHTML = t.Run ();
@@ -1683,11 +1683,11 @@
 			fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("FormView1:FNameEdit");
-			fr.Controls.Add ("FormView1:LNameEdit");
-			fr.Controls["FormView1:FNameEdit"].Value = "EditFirstName";
-			fr.Controls["FormView1:LNameEdit"].Value = "EditLastName";
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:CancelUpdateButton";
+			fr.Controls.Add ("FormView1$FNameEdit");
+			fr.Controls.Add ("FormView1$LNameEdit");
+			fr.Controls["FormView1$FNameEdit"].Value = "EditFirstName";
+			fr.Controls["FormView1$LNameEdit"].Value = "EditLastName";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$CancelUpdateButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			t.Request = fr;
 			pageHTML = t.Run ();
@@ -1751,7 +1751,7 @@
 			fr.Controls.Add ("__EVENTARGUMENT");
 			fr.Controls.Add ("FormView1$FNameEdit");
 			fr.Controls.Add ("FormView1$LNameEdit");
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:UpdateButton";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$UpdateButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			fr.Controls["FormView1$FNameEdit"].Value = "Merav";
 			fr.Controls["FormView1$LNameEdit"].Value = "Test";
@@ -2145,7 +2145,7 @@
 			FormRequest fr = new FormRequest (t.Response, "form1"); 
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");			
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:NewButton";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$NewButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";						
 			t.Request = fr;
 			pageHTML = t.Run ();
@@ -2175,13 +2175,13 @@
 			fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("FormView1:IDInsert");
-			fr.Controls.Add ("FormView1:FNameInsert");
-			fr.Controls.Add ("FormView1:LNameInsert");
-			fr.Controls["FormView1:IDInsert"].Value = "33";
-			fr.Controls["FormView1:FNameInsert"].Value = "InsertFirstName";
-			fr.Controls["FormView1:LNameInsert"].Value ="InsertLastName";
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:InsertButton";
+			fr.Controls.Add ("FormView1$IDInsert");
+			fr.Controls.Add ("FormView1$FNameInsert");
+			fr.Controls.Add ("FormView1$LNameInsert");
+			fr.Controls["FormView1$IDInsert"].Value = "33";
+			fr.Controls["FormView1$FNameInsert"].Value = "InsertFirstName";
+			fr.Controls["FormView1$LNameInsert"].Value ="InsertLastName";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$InsertButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			t.Request = fr;
 			pageHTML = t.Run ();			
@@ -2234,7 +2234,7 @@
 			FormRequest fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			t.Request = fr;
 			pageHTML = t.Run ();			
@@ -2249,7 +2249,7 @@
 			fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			t.Request = fr;
 			pageHTML = t.Run ();
@@ -2263,7 +2263,7 @@
 			fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";
+			fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
 			t.Request = fr;
 			pageHTML = t.Run ();			
Index: Test/System.Web.UI.WebControls/GridViewTest.cs
===================================================================
--- Test/System.Web.UI.WebControls/GridViewTest.cs	(revision 71848)
+++ Test/System.Web.UI.WebControls/GridViewTest.cs	(working copy)
@@ -337,54 +337,54 @@
 			public static int GetCount () {
 				return GetList ().Count;
 			}
-		}
-		
-		public class data
-		{
-			private static ArrayList _data = new ArrayList ();
-
-			static data () {
-				_data.Add (new DataItem (1, "heh1"));
-				_data.Add (new DataItem (2, "heh2"));
-			}
-
-			public data () {
-			}
-
-			public ArrayList GetAllItems () {
-				return _data;
-			}
-
-			public void UpdateItem (int id, string name) {
-				foreach (DataItem i in _data) {
-					if (i.ID == id) {
-						i.Name = name;
-						return;
-					}
-				}
-			}
-		}
-
-		public class DataItem
-		{
-			int _id = 0;
-			string _name = "";
-
-			public DataItem (int id, string name) {
-				_id = id;
-				_name = name;
-			}
-
-			public int ID {
-				get { return _id; }
-			}
-
-			public string Name {
-				get { return _name; }
-				set { _name = value; }
-			}
 		}
+		
+		public class data
+		{
+			private static ArrayList _data = new ArrayList ();
 
+			static data () {
+				_data.Add (new DataItem (1, "heh1"));
+				_data.Add (new DataItem (2, "heh2"));
+			}
+
+			public data () {
+			}
+
+			public ArrayList GetAllItems () {
+				return _data;
+			}
+
+			public void UpdateItem (int id, string name) {
+				foreach (DataItem i in _data) {
+					if (i.ID == id) {
+						i.Name = name;
+						return;
+					}
+				}
+			}
+		}
+
+		public class DataItem
+		{
+			int _id = 0;
+			string _name = "";
+
+			public DataItem (int id, string name) {
+				_id = id;
+				_name = name;
+			}
+
+			public int ID {
+				get { return _id; }
+			}
+
+			public string Name {
+				get { return _name; }
+				set { _name = value; }
+			}
+		}
+
 		public const string BOOLFIELD = "bool";
 		public const string STRINGFIELD = "str";
 		ArrayList myds = new ArrayList ();
@@ -398,9 +398,9 @@
 			myds.Add ("France");
 			myds.Add ("Italy");
 			myds.Add ("Israel");
-			myds.Add ("Russia");
-#if DOT_NET
-			WebTest.CopyResource (GetType (), \
"MonoTests.System.Web.UI.WebControls.Resources.GridViewUpdate.aspx", \
"GridViewUpdate.aspx"); +			myds.Add ("Russia");
+#if VISUAL_STUDIO
+			WebTest.CopyResource (GetType (), \
"MonoTests.System.Web.UI.WebControls.Resources.GridViewUpdate.aspx", \
"GridViewUpdate.aspx");  #else
 			WebTest.CopyResource (GetType (), "GridViewUpdate.aspx", "GridViewUpdate.aspx");
 #endif
@@ -909,18 +909,18 @@
 			ArrayList l = new ArrayList(); 
 			PokerGridView g = new PokerGridView ();
 			Assert.AreEqual (0, g.DoCreateChildControls (l, false), "CreateChildControls#1");
-		}
-
-		[Test]
-		public void GridView_NullDS ()
-		{
-			PokerGridView g = new PokerGridView ();
-			g.DataSource = null;
-			g.DataBind ();
-			Assert.AreEqual (0, g.Rows.Count, "NullDS");
-		}
-
+		}
+
 		[Test]
+		public void GridView_NullDS ()
+		{
+			PokerGridView g = new PokerGridView ();
+			g.DataSource = null;
+			g.DataBind ();
+			Assert.AreEqual (0, g.Rows.Count, "NullDS");
+		}
+
+		[Test]
 		public void GridView_CreateChildTable () {
 			PokerGridView g = new PokerGridView ();
 			g.ID = "PokerGridView";
@@ -2147,7 +2147,7 @@
 		[Test]
 		[Category ("NunitWeb")]
 		public void GridView_PostBackUpdateItem ()
-		{
+		{
 			WebTest t = new WebTest ();
 			PageDelegates pd = new PageDelegates ();
 			pd.Load = GridView_postbackupdateitem;
@@ -2207,8 +2207,8 @@
 		}
 
 		public static void GridView_postbackupdateitem (Page p)
-		{
-			if (!p.IsPostBack)
+		{
+			if (!p.IsPostBack)
 				DataObject.Reset ();
 
 			GridView grid = new GridView ();
@@ -2387,118 +2387,118 @@
 		{
 			PokerGridView g = new PokerGridView ();
 			object o = g.SelectedValue;
-		}
-
-		[Test]
-		[Category ("NunitWeb")]
-		[Category ("NotDotNet")]
-		public void GridViewUpdate () {
-			WebTest t = new WebTest ("GridViewUpdate.aspx");
-			string pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
-			
-			FormRequest fr = new FormRequest (t.Response, "form1");
-			fr.Controls.Add ("__EVENTTARGET");
-			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("GridView1:_ctl2:Name"); // for .NET use "GridView1$ctl02$Name"
-			fr.Controls.Add ("GridView1:_ctl3:Name");
-			fr.Controls ["__EVENTTARGET"].Value = "Button1";
-			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["GridView1:_ctl2:Name"].Value = "ABC";
-			fr.Controls ["GridView1:_ctl3:Name"].Value = "123";
-			t.Request = fr;
-			t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
-			pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
-			#region original
-			string original = @"<div>
-	<table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" \
                style=""border-collapse:collapse;"">
-		<tr>
-			<th scope=""col"">ID</th><th scope=""col"">&nbsp;</th>
-		</tr><tr>
-			<td>1</td><td>
-                        <input name=""GridView1$ctl02$Name"" type=""text"" \
                value=""ABC"" id=""GridView1_ctl02_Name"" />
-                        <input type=""button"" name=""GridView1$ctl02$b1"" \
value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" \
                id=""GridView1_ctl02_b1"" />
-                    </td>
-		</tr><tr>
-			<td>2</td><td>
-                        <input name=""GridView1$ctl03$Name"" type=""text"" \
                value=""123"" id=""GridView1_ctl03_Name"" />
-                        <input type=""button"" name=""GridView1$ctl03$b1"" \
value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" \
                id=""GridView1_ctl03_b1"" />
-                    </td>
-		</tr>
-	</table>
-</div>";
-
-			#endregion			
-			HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #1");
-
-			fr = new FormRequest (t.Response, "form1");
-			fr.Controls.Add ("__EVENTTARGET");
-			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("GridView1:_ctl2:Name");
-			fr.Controls.Add ("GridView1:_ctl3:Name");
-			fr.Controls ["__EVENTTARGET"].Value = "GridView1:_ctl2:b1";
-			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["GridView1:_ctl2:Name"].Value = "ABC";
-			fr.Controls ["GridView1:_ctl3:Name"].Value = "123";
-			t.Request = fr;
-			t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
-			pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
-			#region original
-			original = @"<div>
-	<table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" \
                style=""border-collapse:collapse;"">
-		<tr>
-			<th scope=""col"">ID</th><th scope=""col"">&nbsp;</th>
-		</tr><tr>
-			<td>1</td><td>
-                        <input name=""GridView1$ctl02$Name"" type=""text"" \
                value=""ABC"" id=""GridView1_ctl02_Name"" />
-                        <input type=""button"" name=""GridView1$ctl02$b1"" \
value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" \
                id=""GridView1_ctl02_b1"" />
-                    </td>
-		</tr><tr>
-			<td>2</td><td>
-                        <input name=""GridView1$ctl03$Name"" type=""text"" \
                value=""heh2"" id=""GridView1_ctl03_Name"" />
-                        <input type=""button"" name=""GridView1$ctl03$b1"" \
value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" \
                id=""GridView1_ctl03_b1"" />
-                    </td>
-		</tr>
-	</table>
-</div>";
-
-			#endregion
-			HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #2");
-
-			fr = new FormRequest (t.Response, "form1");
-			fr.Controls.Add ("__EVENTTARGET");
-			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("GridView1:_ctl2:Name");
-			fr.Controls.Add ("GridView1:_ctl3:Name");
-			fr.Controls ["__EVENTTARGET"].Value = "GridView1:_ctl3:b1";
-			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["GridView1:_ctl2:Name"].Value = "ABC";
-			fr.Controls ["GridView1:_ctl3:Name"].Value = "123";
-			t.Request = fr;
-			t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
-			pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
-			#region original
-			original = @"<div>
-	<table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" \
                style=""border-collapse:collapse;"">
-		<tr>
-			<th scope=""col"">ID</th><th scope=""col"">&nbsp;</th>
-		</tr><tr>
-			<td>1</td><td>
-                        <input name=""GridView1$ctl02$Name"" type=""text"" \
                value=""ABC"" id=""GridView1_ctl02_Name"" />
-                        <input type=""button"" name=""GridView1$ctl02$b1"" \
value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" \
                id=""GridView1_ctl02_b1"" />
-                    </td>
-		</tr><tr>
-			<td>2</td><td>
-                        <input name=""GridView1$ctl03$Name"" type=""text"" \
                value=""123"" id=""GridView1_ctl03_Name"" />
-                        <input type=""button"" name=""GridView1$ctl03$b1"" \
value=""upd"" onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" \
                id=""GridView1_ctl03_b1"" />
-                    </td>
-		</tr>
-	</table>
-</div>";
-
-			#endregion
-			HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #3");
 		}
 
+		[Test]
+		[Category ("NunitWeb")]
+		[Category ("NotDotNet")]
+		public void GridViewUpdate () {
+			WebTest t = new WebTest ("GridViewUpdate.aspx");
+			string pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
+			
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls.Add ("GridView1$ctl02$Name"); // for .NET use "GridView1$ctl02$Name"
+			fr.Controls.Add ("GridView1$ctl03$Name");
+			fr.Controls ["__EVENTTARGET"].Value = "Button1";
+			fr.Controls ["__EVENTARGUMENT"].Value = "";
+			fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
+			fr.Controls ["GridView1$ctl03$Name"].Value = "123";
+			t.Request = fr;
+			t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
+			pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
+			#region original
+			string original = @"<div>
+	<table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" \
style=""border-collapse:collapse;""> +		<tr>
+			<th scope=""col"">ID</th><th scope=""col"">&nbsp;</th>
+		</tr><tr>
+			<td>1</td><td>
+                        <input name=""GridView1$ctl02$Name"" type=""text"" \
value=""ABC"" id=""GridView1_ctl02_Name"" /> +                        <input \
type=""button"" name=""GridView1$ctl02$b1"" value=""upd"" \
onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" \
id=""GridView1_ctl02_b1"" /> +                    </td>
+		</tr><tr>
+			<td>2</td><td>
+                        <input name=""GridView1$ctl03$Name"" type=""text"" \
value=""123"" id=""GridView1_ctl03_Name"" /> +                        <input \
type=""button"" name=""GridView1$ctl03$b1"" value=""upd"" \
onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" \
id=""GridView1_ctl03_b1"" /> +                    </td>
+		</tr>
+	</table>
+</div>";
+
+			#endregion			
+			HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #1");
+
+			fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls.Add ("GridView1$ctl02$Name");
+			fr.Controls.Add ("GridView1$ctl03$Name");
+			fr.Controls ["__EVENTTARGET"].Value = "GridView1$ctl02$b1";
+			fr.Controls ["__EVENTARGUMENT"].Value = "";
+			fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
+			fr.Controls ["GridView1$ctl03$Name"].Value = "123";
+			t.Request = fr;
+			t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
+			pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
+			#region original
+			original = @"<div>
+	<table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" \
style=""border-collapse:collapse;""> +		<tr>
+			<th scope=""col"">ID</th><th scope=""col"">&nbsp;</th>
+		</tr><tr>
+			<td>1</td><td>
+                        <input name=""GridView1$ctl02$Name"" type=""text"" \
value=""ABC"" id=""GridView1_ctl02_Name"" /> +                        <input \
type=""button"" name=""GridView1$ctl02$b1"" value=""upd"" \
onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" \
id=""GridView1_ctl02_b1"" /> +                    </td>
+		</tr><tr>
+			<td>2</td><td>
+                        <input name=""GridView1$ctl03$Name"" type=""text"" \
value=""heh2"" id=""GridView1_ctl03_Name"" /> +                        <input \
type=""button"" name=""GridView1$ctl03$b1"" value=""upd"" \
onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" \
id=""GridView1_ctl03_b1"" /> +                    </td>
+		</tr>
+	</table>
+</div>";
+
+			#endregion
+			HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #2");
+
+			fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls.Add ("GridView1$ctl02$Name");
+			fr.Controls.Add ("GridView1$ctl03$Name");
+			fr.Controls ["__EVENTTARGET"].Value = "GridView1$ctl03$b1";
+			fr.Controls ["__EVENTARGUMENT"].Value = "";
+			fr.Controls ["GridView1$ctl02$Name"].Value = "ABC";
+			fr.Controls ["GridView1$ctl03$Name"].Value = "123";
+			t.Request = fr;
+			t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
+			pageHTML = HtmlDiff.GetControlFromPageHtml (t.Run ());
+			#region original
+			original = @"<div>
+	<table cellspacing=""0"" rules=""all"" border=""1"" id=""GridView1"" \
style=""border-collapse:collapse;""> +		<tr>
+			<th scope=""col"">ID</th><th scope=""col"">&nbsp;</th>
+		</tr><tr>
+			<td>1</td><td>
+                        <input name=""GridView1$ctl02$Name"" type=""text"" \
value=""ABC"" id=""GridView1_ctl02_Name"" /> +                        <input \
type=""button"" name=""GridView1$ctl02$b1"" value=""upd"" \
onclick=""javascript:__doPostBack('GridView1$ctl02$b1','')"" \
id=""GridView1_ctl02_b1"" /> +                    </td>
+		</tr><tr>
+			<td>2</td><td>
+                        <input name=""GridView1$ctl03$Name"" type=""text"" \
value=""123"" id=""GridView1_ctl03_Name"" /> +                        <input \
type=""button"" name=""GridView1$ctl03$b1"" value=""upd"" \
onclick=""javascript:__doPostBack('GridView1$ctl03$b1','')"" \
id=""GridView1_ctl03_b1"" /> +                    </td>
+		</tr>
+	</table>
+</div>";
+
+			#endregion
+			HtmlDiff.AssertAreEqual (original, pageHTML, "GridViewUpdate #3");
+		}
+
         [TestFixtureTearDown]
         public void TearDown()
         {
@@ -2571,13 +2571,13 @@
 		public static DataTable Select ()
 		{
 			return ds;
-		}
-
-		public static void Reset ()
-		{
-			ds = CreateDataTable ();
-		}
+		}
 
+		public static void Reset ()
+		{
+			ds = CreateDataTable ();
+		}
+
 		public static DataTable Delete (string ID, string FName, string LName)
 		{
 			DataRow dr = ds.Rows.Find (ID);
@@ -2653,7 +2653,7 @@
 
 			aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };
 			return aTable;
-		}
+		}
 	}
 }
 
@@ -2663,3 +2663,4 @@
 
 
 
+
Index: Test/System.Web.UI.WebControls/LoginTest.cs
===================================================================
--- Test/System.Web.UI.WebControls/LoginTest.cs	(revision 71848)
+++ Test/System.Web.UI.WebControls/LoginTest.cs	(working copy)
@@ -261,7 +261,11 @@
 		[TestFixtureSetUp]
 		public void SetUp ()
 		{
+#if VISUAL_STUDIO
+			WebTest.CopyResource (GetType (), \
"MonoTests.System.Web.UI.WebControls.Resources.NoEventValidation.aspx", \
"NoEventValidation.aspx"); +#else
 			WebTest.CopyResource (GetType (), "NoEventValidation.aspx", \
"NoEventValidation.aspx"); +#endif
 		}
 #endif
 
@@ -958,9 +962,9 @@
 			fr.Controls.Add (GetDecoratedId (html, "LoginButton"));
 			fr.Controls ["__EVENTTARGET"].Value = "";
 			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["Login1:UserName"].Value = "yonik";
-			fr.Controls ["Login1:Password"].Value = "123456";
-			fr.Controls ["Login1:LoginButton"].Value = "Log In";
+			fr.Controls ["Login1$UserName"].Value = "yonik";
+			fr.Controls ["Login1$Password"].Value = "123456";
+			fr.Controls ["Login1$LoginButton"].Value = "Log In";
 			t.Request = fr;
 			t.Run ();
 
@@ -988,9 +992,9 @@
 			fr.Controls.Add (GetDecoratedId (html, "LoginButton"));
 			fr.Controls ["__EVENTTARGET"].Value = "";
 			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["Login1:UserName"].Value = "yonik";
-			fr.Controls ["Login1:Password"].Value = "123456";
-			fr.Controls ["Login1:LoginButton"].Value = "Log In";
+			fr.Controls ["Login1$UserName"].Value = "yonik";
+			fr.Controls ["Login1$Password"].Value = "123456";
+			fr.Controls ["Login1$LoginButton"].Value = "Log In";
 			t.Request = fr;
 			t.Run ();
 
Index: Test/System.Web.UI.WebControls/WizardTest.cs
===================================================================
--- Test/System.Web.UI.WebControls/WizardTest.cs	(revision 71848)
+++ Test/System.Web.UI.WebControls/WizardTest.cs	(working copy)
@@ -1629,10 +1629,10 @@
 #else
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("Wizard1:StartNavContainer:CancelButtonButton");
+			fr.Controls.Add ("Wizard1$StartNavContainer$CancelButtonButton");
 			fr.Controls ["__EVENTTARGET"].Value = "";
 			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["Wizard1:StartNavContainer:CancelButtonButton"].Value = "Cancel";
+			fr.Controls ["Wizard1$StartNavContainer$CancelButtonButton"].Value = "Cancel";
 #endif
 			t.Request = fr;
 			html = t.Run ();
@@ -1649,10 +1649,10 @@
 #else
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("Wizard1:StartNavContainer:StartNextButtonButton");
+			fr.Controls.Add ("Wizard1$StartNavContainer$StartNextButtonButton");
 			fr.Controls["__EVENTTARGET"].Value = "";
 			fr.Controls["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["Wizard1:StartNavContainer:StartNextButtonButton"].Value = "Next";
+			fr.Controls ["Wizard1$StartNavContainer$StartNextButtonButton"].Value = "Next";
 #endif
 			t.Request = fr;
 			html = t.Run ();
@@ -1671,11 +1671,11 @@
 #else
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("Wizard1:FinishNavContainer:FinishPreviousButtonButton");
+			fr.Controls.Add ("Wizard1$FinishNavContainer$FinishPreviousButtonButton");
 
 			fr.Controls ["__EVENTTARGET"].Value = "";
 			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["Wizard1:FinishNavContainer:FinishPreviousButtonButton"].Value = \
"Previous"; +			fr.Controls \
["Wizard1$FinishNavContainer$FinishPreviousButtonButton"].Value = "Previous";  #endif
 			t.Request = fr;
 			html = t.Run ();
@@ -1705,10 +1705,10 @@
 #else
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("Wizard1:StartNavContainer:StartNextButtonButton");
+			fr.Controls.Add ("Wizard1$StartNavContainer$StartNextButtonButton");
 			fr.Controls ["__EVENTTARGET"].Value = "";
 			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["Wizard1:StartNavContainer:StartNextButtonButton"].Value = "Next";
+			fr.Controls ["Wizard1$StartNavContainer$StartNextButtonButton"].Value = "Next";
 #endif
 			t.Request = fr;
 			html = t.Run ();
@@ -1726,10 +1726,10 @@
 #else
 			fr.Controls.Add ("__EVENTTARGET");
 			fr.Controls.Add ("__EVENTARGUMENT");
-			fr.Controls.Add ("Wizard1:FinishNavContainer:FinishButtonButton");
+			fr.Controls.Add ("Wizard1$FinishNavContainer$FinishButtonButton");
 			fr.Controls ["__EVENTTARGET"].Value = "";
 			fr.Controls ["__EVENTARGUMENT"].Value = "";
-			fr.Controls ["Wizard1:FinishNavContainer:FinishButtonButton"].Value = "Finish";
+			fr.Controls ["Wizard1$FinishNavContainer$FinishButtonButton"].Value = "Finish";
 #endif
 			t.Request = fr;
 			t.Run ();
Index: Test/System.Web.UI/ControlTest.cs
===================================================================
--- Test/System.Web.UI/ControlTest.cs	(revision 71848)
+++ Test/System.Web.UI/ControlTest.cs	(working copy)
@@ -121,6 +121,26 @@
 			Assert.IsTrue (-1 != control.UniqueID.IndexOfAny (new char[] { ':', '$' }), \
"separator");  }
 
+		[Test]
+		public void ClientID () 
+		{
+			// NC in control
+			Control control = new Control ();
+			Control nc = new MyNC ();
+			Control nc2 = new MyNC ();
+			Control nc3 = new MyNC ();
+
+			nc3.Controls.Add (nc2);
+			nc2.Controls.Add (nc);
+			nc.Controls.Add (control);
+#if NET_2_0
+			string expected = "ctl00_ctl00_ctl00";
+#else
+			string expected = "_ctl0__ctl0__ctl0";
+#endif
+			Assert.AreEqual (expected, control.ClientID, "ClientID");
+		}
+
 		// From bug #76919: Control uses _controls instead of
 		// Controls when RenderChildren is called.
 		[Test]
@@ -164,7 +184,7 @@
 		[Category ("NunitWeb")]
 		public void ApplyStyleSheetSkin_1 ()
 		{
-#if DOT_NET
+#if VISUAL_STUDIO
 			WebTest.CopyResource (GetType (), \
"MonoTests.System.Web.UI.WebControls.Resources.Theme2.skin", \
"App_Themes/Theme2/Theme2.skin");  #else
 			WebTest.CopyResource (GetType (), "Theme2.skin", \
"App_Themes/Theme2/Theme2.skin"); @@ -669,6 +689,17 @@
 			Assert.AreEqual (null, ctr.Adapter (), "Adapter");
 		}
 #endif
+		[Test]
+		public void ChildControlsCreated () {
+			ChildControlsCreatedControl ctr = new ChildControlsCreatedControl ();
+			ctr.Controls.Add (new Control ());
+			//ctr.DoEnsureChildControls ();
+
+			Assert.AreEqual (1, ctr.Controls.Count, "ChildControlsCreated#1");
+			ctr.SetChildControlsCreated (false);
+			Assert.AreEqual (1, ctr.Controls.Count, "ChildControlsCreated#2");
+		}
+
 #if NET_2_0
 		[TestFixtureTearDown]
 		public void Tear_down ()
@@ -850,8 +881,24 @@
 	{
 	}
 #endif
+
+	public class ChildControlsCreatedControl : Control
+	{
+		protected override void CreateChildControls () {
+			Controls.Add (new Control ());
+		}
+
+		public void DoEnsureChildControls () {
+			EnsureChildControls ();
+		}
+
+		public void SetChildControlsCreated (bool value) {
+			ChildControlsCreated = value;
+		}
+	}
 }
 
 
 
 
+



_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic