代码改变世界

Ajax调用服务器端C#方法

2010-12-05 12:50  smat  阅读(413)  评论(0编辑  收藏  举报

首先下载 AjaxPro .dll,你可以从 http://www.ajaxpro.info/ 获得。下载解压后的文件夹中有个AjaxPro.dll,就是它了。使用VS2005新建web项目, 并添加对AjaxPro.dll的引用( vs2008中无需添加 AjaxPro.dll ),然后在Web配置文件中添加:

<httpHandlers>
    
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>

这个配置项表明所有的ajaxpro/*.ashx请求(即从客户发送的Ajax请求)都交给AjaxPro.AjaxHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory来处理。 
    新建的web项目有个默认的_Default页面,我们为其加上命名空间如MyAjaxNetTest,然后在_Default的HTML第一句也要加上这个名目空间:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

然后在PageLoad中注册本页面到AjaxPro中:

protected void Page_Load(object sender, EventArgs e)
{
     AjaxPro.Utility.RegisterTypeForAjax(
typeof(_Default)); 
}

我们先进行第一个测试,从客户调用服务端的简单方法。首先在_Default类中添加方法:

[AjaxPro.AjaxMethod]
public string GetTime()
{
   
return DateTime.Now.ToString();
}

客户现在可以在JS中调用这个方法了,如

<mce:script type="text/javascript"><!--
     
function getTime()
       {         
          alert(_Default.GetTime().value);          
       }
    
// --></mce:script>

然后你可以加个HTML的button,onclick处理函数设为getTime()。

<input id="Button1" type="button" value="button" onclick="getTime()"/>