我想我是海

人之熙熙,所为何来?人之攘攘,所为何往?
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Ajax.NET初步了解

Posted on 2006-07-04 02:15  大海  阅读(2816)  评论(7)    收藏  举报

1.  Ajax.NET Pro的下载地址http://www.ajaxpro.info/

2.  Ajax.NET简介

Ajax.NET是一个类库,实现从Javascript到服务器端.NET的存取。

Ajax.NET的特点:

l         能把Javascript中的调用传递到.NET方法,并返回到Javascript回叫。

l         能存取来自于JavaScript的会话数据。

l         缓存结果

l         自由使用,可用的源码。

l         用属性标记方法

l         完整的类支持以返回客户端JavaScript

l         使用HtmlControls来进行输入和返回值

l         可以返回数据表,数据集,数据视图,数组和集合

3.  Ajax.NET的入门(以下例子在VS 2005下编写)

1)  新建网站AjaxDemo

2)  首先,先添加对AjaxPro.2.dll的引用(Framework 1.1 AjaxPro.dll)

3)  配置Web.Config文件

 1 <configuration>
 2   <system.web>
 3   <!-- Ajax.NET Profession 
 4     将ajaxpro下文件扩展名为.ashx 的文件的HTTP GET
 5    和POST 请求映射到AjaxPro.AjaxHandlerFactory
 6    处理程序
 7    .Net Framework 1.1配置:
 8   <httpHandlers>
 9    <add 
10     verb="POST,GET" 
11     path="ajaxpro/*.ashx" 
12     type="AjaxPro.AjaxHandlerFactory, AjaxPro"
13   />
14  </httpHandlers>
15  -->
16  <httpHandlers>
17  <!--.Net Framework 2.0 配置-->
18  <add 
19   verb="POST,GET" 
20   path="ajaxpro/*.ashx" 
21   type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"
22  />
23  </httpHandlers>
24  </system.web>
25</configuration>


4)  新建页面FirstAjaxNet.aspx

              VS 2005新建页面默认不带命名空间,自己定义一个命名空间,这里我们全部用AjaxDemo作为名称空间,
    如果在后端代码添加以下代码设定命名空间,
     
namespace AjaxDemo
      
{
         
//......
      }
   那么关联的
Aspx页面上的
   
<%@ Page Language="C#" ……. Inherits="AjaxDemo.FirstAjaxNet" %>
   中的Inherits属性也要进行相应的修改,否则编译将会出错。

添加一个.NET服务端方法GetAuthorName,为了让服务端方法能够和Javascript脚本编写的客户端方法能够交互,必须用Ajax.NET的属性标记把方法标记为AjaxPro.AjaxMethod属性;另外ASP.NET后端代码中的方法要在客户端脚本中进行调用,必须将方法所属类,通过Ajax.NETAjaxPro.Utility.RegisterTypeForAjax进行类型注册。

5)  客户端脚本


 1<script language="javascript" type="text/jscript">
 2        function GetAuthor()
 3        {
 4            //调用ASP.NET服务端方法,并回调JavaScript客户端脚本函数,
 5//必须在后端代码先注册所调用方法所属类的类型
 6            return AjaxDemo.FirstAjaxNet.GetAuthorName(getAuthor_callback);
 7        }

 8        
 9        //JavaScript客户端脚本回调函数
10        function getAuthor_callback(res)
11        {
12          //res.value获得服务端方法返回值
13           document.getElementById("lblAuthor").innerText = res.value;
14           window.status = "hi," + res.value + " wellcome!";
15        }

16        
17        function Init()
18        {
19            document.getElementById("divUserInfo").style.display=""
20            GetAuthor();
21        }

22</script>
23

6)  HTML脚本

 1<form id="form1" runat="server">
 2    <button id="btnAjaxTest" onclick="javascript: return Init();">AjaxTest</button>
 3    <br />
 4    <div id="divUserInfo" style="display:none;"> 
 5        <table>
 6            <tr>
 7                <td style="width:20%;">作者姓名:</td>
 8                <td><asp:Label id="lblAuthor" runat="server"></asp:Label></td>
 9            </tr> 
10        </table>
11        
12    </div>
13</form>
14

7)  总结

通过Ajax.NET库,我们可以在ASP.NET中简单、快速的实现Ajax。使用中我们要注意到:要让客户端脚本调用服务端方法,必须将要访问的方法进行AjaxPro.AjaxMethod属性标记,并将方法所属类的类型通过AjaxPro.Utility.RegisterTypeForAjax进行注册。