Start with Ajax.NET
Ajax.NET Professional
Microsoft.NET Framework 2.0
Ajax.net Professional简介:
Ajax.net 是一个针对.NET平台Ajax的服务端框架(微软也有一个称之为Atlas的框架,关于Atlas请参看Dflying Chen的Blog),它能让你在客户端调用.NET方法,你还可以获得相关的源代码.不过它的许可协议不是很明确。
联系原作者: http://weblogs.asp.net/mschwarz/contact.aspx
原作者的Blog: http://weblogs.asp.net/mschwarz/
如果你有问题或是找到了Bug请访问: Google group Ajax.NET Professional.
原作者的邮件地址:
Michael Schwarz
Meisenweg 2
90547 Stein, Germany
下载Ajax.NET Pro(5.11.4.2),包括针对.NET1.1(C#)和.NET2.0(C#/VB.NET).
让我们先从这里开始吧:Ajax.NET新手指引
首先,添加对AjaxPro.2.dll的引用(对于.NET Framework 1.1 添加AjaxPro.dll)
然后,添加配置文件web.config,添加如下几行:
2<configuration>
3 <appSettings/>
4 <connectionStrings/>
5 <system.web>
6 <httpHandlers>
7 <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
8 </httpHandlers>
9 []
10 </system.web>
11</configuration>
12
意思是所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理。
现在我们写个AjaxMethod服务器端方法,他和普通的服务器方法唯一不同的地方就是他必须要在方法的上面添加个[AjaxPro.AjaxMethod],代码如下:
2 public int AddTwo(int firstInt, int secondInt)
3 {
4 return firstInt + secondInt;
5 }
要想在客户端使用Javascript调用.NET方法,你还必须注册这些方法:
2 {
3 AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
4 }
最后,我们再写客户端脚本来调用服务器方法(代码里有详细的注释)。
以下是前台Default.aspx代码:
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4<html xmlns="http://www.w3.org/1999/xhtml">
5<head id="Head1" runat="server">
6 <title>Untitled Page</title>
7</head>
8<body>
9 <form id="form1" runat="server">
10 <div>
11 <input id="Text1" type="text" onchange="add()"/>
12 +
13 <input id="Text2" type="text" onchange="add()"/>
14 =
15 <span id="result"></span>
16 </div>
17 </form>
18
19 <script type="text/javascript">
20 function add()
21 {
22 var a=document.getElementById('Text1').value;
23 var b=document.getElementById('Text2').value;
24 var a1 = parseInt(a);
25 var b1 = parseInt(b);
26
27 _Default.AddTwo(a1,b1,getAdd_callback); // 异步调用服务器端方法
28 }
29
30 function getAdd_callback(rel)
31 {
32 //MyDemo._Default.GetServerTime()得到从服务器传来的数据是object,要写.value
33 document.getElementById("result").innerHTML=rel.value;
34 }
35
36 </script>
37
38</body>
39</html>
40
以下是完整的后台Default.aspx.cs代码:
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
[AjaxPro.AjaxMethod]
public int AddTwo(int firstInt, int secondInt)
{
return firstInt + secondInt;
}
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
}