Ajax.NET Pro 简单例子和注意

★后台代码如下:
-----------------------------------------------------------------------------------------------------------
 1 public  partial  class  AjaxPro_example_Default : System.Web.UI.Page
 2 {
 3
 4    protected void Page_Load(object sender, EventArgs e)
 5    {
 6        AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxPro_example_Default));//必须保证每次回发时都执行此注册语句
 7    }

 8
 9    [AjaxPro.AjaxMethod]
10    public DateTime GetServerTime()
11    {
12        return DateTime.Now;
13    }

14}

★前台代码如下:当页面载入后,间隔一秒从服务器上取得时间并显示在aspx页面上的divMsg中
----------------------------------------------------------------------------------------------------

 1 <head runat="server">
 2    <title>无标题页</title>
 3<script type="text/javascript">
 4function getServerTime()
 5{
 6  //AjaxPro_example_Default.GetServerTime(getServerTime_callback);  // asynchronous call 注释掉:示例中的原代码
 7
 8  window.setInterval("AjaxPro_example_Default.GetServerTime(getServerTime_callback)",1000);//每隔一秒调用一次  
 9}

10
11// 回调函数
12function getServerTime_callback(res)
13{
14    //alert(res.value);//注释掉:示例中的原代码
15    document.getElementById("divMsg").innerText=res.value;//将时间值填充到div中呈现
16}

17
18window.onload=getServerTime;//页面载入时执行
19
20</script>
21</head>
22<body >
23    <form id="form1" runat="server">
24    <div  id="divMsg" style="width: 100px; height: 100px">
25        </div>
26    </form>    
27</body>
28</html>

★值得注意的几个要点:
----------------------------------------------------------------------------------------------------

1.必须在Web应用程序的根目录下的Web.config文件的<system.web>结点内中添加:
  <httpHandlers>
      <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
    </httpHandlers>

2. 服务端必须在Page_Load中注册包含调用方法的类,并且必须保证页面每次回发时都执行注册语句。
  即不能写成:
   if(!IsPostBack)
   {  //注册语句不能写在此处,否则页面回发后,客户端将无法访问到AjaxPro_example_Default类
      AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxPro_example_Default));
   }


3. 服务端只有用[AjaxPro.AjaxMethod]标记过的方法,才能被客户端调用

4. 客户端页面上必须有<form  runat="server">标记,否则不能访问在服务端已注册的类

★遗憾之处:
----------------------------------------------------------------------------------------------------
      不能跨页面调用,只能在与后代cs相关联的前台页面上访问注册过的类或方法,要是可以在一处(如global文件中)注册所有需要在前台访问的对象,而前台不论是哪个位置的html或aspx页面都可以访问到注册过的对象,那将是更加的方便灵活。

你可能感兴趣的:(.net)