【 tulaoshi.com - Web开发 】
现在的项目准备用ajax,用ajax.net实现,而不是atlas,所以先看下ajax.net,Ajax.Net现在的最新版本是AjaxPro5.11.4.2
首先我们新建个项目,名字是AjaxPro,我用的是vs2005beta2版本。
右击站点名字点add reference添加对我们刚刚下载来的那个叫AjaxPro.2.dll的引用,如果你用的是vs2003,则添加对AjaxPro.dll的引用,然后我们在添加个web.config文件(很郁闷的是vs2005不再自动添加web.config文件拉),修改web.config如下:
type="AjaxPro.AjaxHandlerFactory,
AjaxPro.2"/
意思是所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理。
我们现在给Default.aspx.cs文件添加个名字空间namespace MyDemo,这里更加郁闷的是为什么vs2005beta2怎么不给你自动添加名字空间啊?和2003怎么完全不同呢?
现在我们写个AjaxMethod服务器端方法,他和普通的服务器方法唯一不同的地方就是他必须要在方法的上面添加个[AjaxPro.AjaxMethod],代码如下:
[AjaxPro.AjaxMethod]
public DateTime GetServerTime()
{
return DateTime.Now;
}
[AjaxPro.AjaxMethod]public int
AddTwo(int firstInt, int secondInt)
{
return firstInt + secondInt;
}
我们还必须在Page_Load里面把这个类注册下,如下:
protected void Page_Load
(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax
(typeof(_Default));
}
这个时候我们还必须修改aspx页面的指令行,因为我们在后台搞了个名字空间,如下:Inherits="MyDemo._Default"也就是要把名字空间也写上。我们再写客户端脚本来调用服务器方法。代码里有详细的注释,前台Default.aspx代码:
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
runat="server"
input type="button" value="获得服务器时间"
onclick="getServerTime();" /
input id="Text1" type="text" /
input id="Text2" type="text" /id="Button2" type="button"
value="得到两个文本框的和"
onclick="add(document.getElementById(’Text1’).
value,document.getElementById(’Text2’).value)"
/
后台Default.aspx.cs代码:
using System;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;
namespace MyDemo
{
public partial class _Default :
System.Web.UI.Page{protected void
Page_Load(object sender, EventArgs e){AjaxPro.Utility.RegisterTypeForAjax
(typeof(_Default));
}
[AjaxPro.AjaxMethod]public
DateTime GetServerTime()
{return DateTime.Now;
}[AjaxPro.AjaxMethod]public int AddTwo
(int firstInt, int secondInt)
{
return firstInt + secondInt;
}}}
按F5运行结果如下,
firefox里面测试通过:
using System;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;
namespace MyDemo
{
public partial class _Default :
System.Web.UI.Page
{
protected void Page_Load
(object sender, EventArgs e)
{AjaxPro.Utility.RegisterTypeForAjax
(typeof(_Default));}
[AjaxPro.AjaxMethod]public DateTime
GetServerTime(){return DateTime.Now;
}
[AjaxPro.AjaxMethod]public
int AddTwo(int firstInt,
int secondInt)
{return firstInt + secondInt;}}}