example.aspx
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:10k
源码类别:

Ajax

开发平台:

C#

  1. <%@ Page language="c#" Inherits="System.Web.UI.Page" ClassName="Example" %>
  2. <script language="c#" runat="server">
  3. public class MyClass
  4. {
  5. public string FirstName = "Michael";
  6. public int Age = 28;
  7. }
  8. public struct MyStruct
  9. {
  10. public string FirstName;
  11. public int Age;
  12. }
  13. [AjaxPro.AjaxMethod]
  14. public string Test01(string input)
  15. {
  16. return "Hello " + input;
  17. }
  18. [AjaxPro.AjaxMethod]
  19. public DateTime Test02(DateTime d)
  20. {
  21. return d.AddMinutes(10);
  22. }
  23. [AjaxPro.AjaxMethod]
  24. public int[] Test03(int[] i)
  25. {
  26. return i;
  27. }
  28. [AjaxPro.AjaxMethod]
  29. public ArrayList Test04(ArrayList list)
  30. {
  31. return list;
  32. }
  33. [AjaxPro.AjaxMethod]
  34. public Decimal Test05(Decimal d)
  35. {
  36. return d * 2;
  37. }
  38. [AjaxPro.AjaxMethod]
  39. public System.Data.DataSet Test06(System.Data.DataSet ds)
  40. {
  41. return ds;
  42. }
  43. [AjaxPro.AjaxMethod]
  44. public bool Test07(bool b)
  45. {
  46. return !b;
  47. }
  48. [AjaxPro.AjaxMethod]
  49. public string Test08(string[] s)
  50. {
  51. string ss = "";
  52. foreach (string _s in s)
  53. ss += _s + "#";
  54. return ss.Substring(0, ss.Length -1);
  55. }
  56. [AjaxPro.AjaxMethod]
  57. public System.Collections.Generic.List<string> Test09(System.Collections.Generic.List<string> s)
  58. {
  59. return s;
  60. }
  61. [AjaxPro.AjaxMethod]
  62. public System.Collections.Generic.List<double> Test10(System.Collections.Generic.List<double> d)
  63. {
  64. return d;
  65. }
  66. [AjaxPro.AjaxMethod]
  67. public char Test11(char c)
  68. {
  69. return c;
  70. }
  71. [AjaxPro.AjaxMethod]
  72. public char Test12()
  73. {
  74. return (char)0;
  75. }
  76. [AjaxPro.AjaxMethod]
  77. public string Test13(char c)
  78. {
  79. return "";
  80. }
  81. [AjaxPro.AjaxMethod]
  82. public MyClass Test14()
  83. {
  84. return new MyClass();
  85. }
  86. [AjaxPro.AjaxMethod]
  87. public MyClass Test15(MyClass c)
  88. {
  89. return c;
  90. }
  91. [AjaxPro.AjaxMethod]
  92. public System.Data.DataTable Test16()
  93. {
  94. System.Data.DataTable dt = new System.Data.DataTable();
  95. dt.Columns.Add("FamilyName", typeof(string));
  96. dt.Columns.Add("Birthday", typeof(DateTime));
  97. // dt.Columns.Add("PersonInfo", typeof(MyClass));
  98. System.Data.DataRow row = dt.NewRow();
  99. row["FamilyName"] = "Schwarz";
  100. row["Birthday"] = new DateTime(1977, 4, 20);
  101. MyClass c = new MyClass();
  102. c.FirstName = "Michael";
  103. c.Age = 28;
  104. // row["PersonInfo"] = c;
  105. dt.Rows.Add(row);
  106. return dt;
  107. }
  108. [AjaxPro.AjaxMethod]
  109. public string Test17(System.Data.DataTable dt)
  110. {
  111. System.Data.DataSet ds = new System.Data.DataSet();
  112. ds.Tables.Add(dt);
  113. return ds.GetXml();
  114. }
  115. [AjaxPro.AjaxMethod]
  116. public System.Xml.XmlDocument Test18()
  117. {
  118. System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
  119. doc.LoadXml("<ROOT/>");
  120. System.Xml.XmlElement e = doc.CreateElement("FirstName");
  121. e.InnerText = "Michael";
  122. doc.DocumentElement.AppendChild(e);
  123. e = doc.CreateElement("SpecialChars");
  124. e.InnerText = "öäüÖÄÜß!"<>§$";
  125. doc.DocumentElement.AppendChild(e);
  126. return doc;
  127. }
  128. public void Page_Load(object sender, EventArgs e)
  129. {
  130. AjaxPro.Utility.RegisterTypeForAjax(typeof(Example));
  131. }
  132. </script>
  133. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
  134. <html xmlns="http://www.w3.org/1999/xhtml">
  135. <head>
  136. <title>Example</title>
  137. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  138. <style type="text/css">
  139. BODY {font-family:Tahoma,Arial;font-size:10pt;}
  140. PRE {font-family:Courier New,Courier;font-size:8pt;}
  141. </style>
  142. </head>
  143. <body>
  144. <form id="Form1" method="post" runat="server">
  145. <div id="loading" style="position:absolute;left:1px;top:1px;border:1px solid black;color:White;background-color:Red;margin:2px;display:none;">Loading...</div>
  146. <div id="display"></div>
  147. <script type="text/javascript">
  148. var i = 0;
  149. var oldResult = null;
  150. var tests = [
  151. {
  152. desc: "Checks if a string will be parsed correct in both directions.",
  153. run:function() { ASP.Example.Test01("Michael öäüß!"§$%&/()=+´`@€'", callback); },
  154. callback:function(res) { return res.value == "Hello " + "Michael öäüß!"§$%&/()=+´`@€'"; }
  155. },
  156. {
  157. desc: "Checks if a Date object will be parsed correct in both directions.",
  158. run:function() { var d = new Date();
  159. ASP.Example.Test02(d, callback, d);
  160. },
  161. callback:function(res) { return res.value.getTime() == res.context.getTime() + 10*60*1000; }
  162. },
  163. {
  164. desc: "Checks if an integer array will be parsed correct in both directions.",
  165. run:function() { var i = [1,2,3,4,5,6];
  166. ASP.Example.Test03(i, callback, i);
  167. },
  168. callback:function(res) { return compareArray(res.value, res.context); }
  169. },
  170. {
  171. desc: "Checks if an ArrayList will be parsed correct in both directions.",
  172. run:function() { var i = [1,2,3,"Hello World",true,-2000];
  173. ASP.Example.Test04(i, callback, i);
  174. },
  175. callback:function(res) { return compareArray(res.value, res.context); }
  176. },
  177. {
  178. desc: "Checks if a Decimal value will be parsed correct in both directions.",
  179. run:function() { var i = -2.445566;
  180. ASP.Example.Test05(i, callback, i);
  181. },
  182. callback:function(res) { return res.value == res.context *2; }
  183. },
  184. {
  185. desc: "Checks if a DataSet can be passed in both directions.",
  186. run:function() {
  187. var ds = new Ajax.Web.DataSet();
  188. var dt = new Ajax.Web.DataTable();
  189. dt.addColumn("FirstName", "System.String");
  190. dt.addColumn("Age", "System.Int32");
  191. ds.addTable(dt);
  192. var r = {};
  193. r.FirstName = "Michael";
  194. r.Age = 28;
  195. dt.addRow(r);
  196. ASP.Example.Test06(ds, callback, ds);
  197. },
  198. callback:function(res) {
  199. return res.value.Tables[0].Rows[0].FirstName == "Michael" && res.value.Tables[0].Rows[0]["Age"] == 28 && !isNaN(res.value.Tables[0].Rows[0].Age && compareArray(res.value.Tables[0].Rows[0], res.context.Tables[0].Rows[0]));
  200. }
  201. },
  202. {
  203. desc: "Checks if a Boolean can be passed in both directions.",
  204. run:function() { ASP.Example.Test07(true, callback); },
  205. callback:function(res) { return res.value == false; }
  206. },
  207. {
  208. desc: "Checks if a string array can be passed to the AJAX method.",
  209. run:function() { var l = ["Hello", "Michael", "Schwarz"];
  210. ASP.Example.Test08(l, callback, l);
  211. },
  212. callback:function(res) { return res.value == res.context.join("#"); }
  213. },
  214. {
  215. desc: "Checks if a generic string list can be passed in both directions.",
  216. run:function() { var l = ["Hello", "Michael", "Schwarz"];
  217. ASP.Example.Test09(l, callback, l);
  218. },
  219. callback:function(res) { return compareArray(res.value, res.context); }
  220. },
  221. {
  222. desc: "Checks if a generic double list can be passed in both directions.",
  223. run:function() { var l = [-1,-0.22223,0,1,2,3,4.5678,9.001];
  224. ASP.Example.Test10(l, callback, l);
  225. },
  226. callback:function(res) { return compareArray(res.value, res.context); }
  227. },
  228. {
  229. desc: "Checks if a char can be passed in both directions.",
  230. run:function() { ASP.Example.Test11("s", callback);
  231. },
  232. callback:function(res) { return "s" == res.value; }
  233. },
  234. {
  235. desc: "Checks if a null char can be returned.",
  236. run:function() { ASP.Example.Test12(callback);
  237. },
  238. callback:function(res) { return "" == res.value; }
  239. },
  240. {
  241. desc: "Checks if a null string can be returned.",
  242. run:function() { ASP.Example.Test13("", callback);
  243. },
  244. callback:function(res) { return "" == res.value; }
  245. },
  246. {
  247. desc: "Checks if embedded MyClass object can be returned.",
  248. run:function() { ASP.Example.Test14(callback);
  249. },
  250. callback:function(res) {
  251. oldResult = res.value;
  252. return res.value.FirstName == "Michael";
  253. }
  254. },
  255. {
  256. desc: "Checks if embedded MyClass can be used as an argument.",
  257. run:function() { 
  258. oldResult.FirstName = "Hans";
  259. ASP.Example.Test15(oldResult, callback);
  260. },
  261. callback:function(res) {
  262. return res.value.FirstName == "Hans";
  263. }
  264. },
  265. {
  266. desc: "Checks if we can get a DataTable with custom classes.",
  267. run:function() { ASP.Example.Test16(callback); },
  268. callback:function(res) {
  269. oldResult = res.value;
  270. return res.value.Rows[0].FamilyName == "Schwarz";
  271. }
  272. },
  273. {
  274. desc: "Checks if a DataTable retrieved from server can be used as an argument.",
  275. run:function() { ASP.Example.Test17(oldResult, callback); },
  276. callback:function(res) {
  277. return true;
  278. }
  279. },
  280. {
  281. desc: "Checks if an XmlDocument can be returned.",
  282. run:function() { ASP.Example.Test18(callback); },
  283. callback:function(res) {
  284. if(MS.Browser.isIE)
  285. return res.value.documentElement.selectSingleNode("SpecialChars").text == "öäüÖÄÜß!"<>§$";
  286. return res.value.documentElement.getElementsByTagName("SpecialChars")[0].firstChild.data == "öäüÖÄÜß!"<>§$";
  287. }
  288. }
  289. ];
  290. AjaxPro.onLoading = function(b) {
  291. window.status = b ? "Loading..." : "";
  292. $("loading").style
  293. }
  294. function compareArray(a, b) {
  295. if(a == null || b == null) return false;
  296. if(a.length != b.length) return false;
  297. for(var i=0; i<a.length; i++) {
  298. if(typeof a[i] != typeof b[i]) return false;
  299. if(a[i] != b[i]) return false;
  300. }
  301. return true;
  302. }
  303. function callback(res) {
  304. if(tests[i].callback(res) == true) {
  305. $("display").innerHTML += "<b style="color:green">Test " + (i+1) + " finished</b><br/>";
  306. if(tests[i].desc) $("display").innerHTML += "&nbsp; &nbsp; <i>" + tests[i].desc + "</i><br/>";
  307. } else {
  308. $("display").innerHTML += "<b style="color:red">Test " + (i+1) + " failed" + (res.error != null ? " (" + res.error.Message + ")" : "") + "</b><br/>";
  309. if(tests[i].desc) $("display").innerHTML += "&nbsp; &nbsp; <i>" + tests[i].desc + "</i><br/>";
  310. $("display").innerHTML += "<pre>" + AjaxPro.toJSON(res).replace(/\r\n/g,"<br/>").replace(/</g,"&lt;").replace(/>/g,"&gt;") + "</pre>";
  311. }
  312. $("display").innerHTML += "<hr size="1"/>";
  313. i++;
  314. setTimeout(run, 1);
  315. }
  316. function run() {
  317. if(i<tests.length) {
  318. tests[i].run();
  319. }
  320. }
  321. setTimeout(run, 1);
  322. </script>
  323. </form>
  324. </body>
  325. </html>