第一个Ajax.net程序的实现及心得。

      首先从网上下载一个AjaxPro.dll(vs2003),然后把Ajax.dll copy到应用系统bin目录下,在项目中添加引用AjaxPro.dll。随后,找到web.config文件,修改里面的配置: 
  < httpHandlers >
  
< add  verb ="POST,GET"  path ="ajaxpro/*.ashx"  type ="AjaxPro.AjaxHandlerFactory,AjaxPro" ></ add >
  
</ httpHandlers >
意思是所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理。
     接下来我们就开始第一个Ajax.net的初次旅行。
     新建一个项目ajax,然后呢,打开WebForm2.aspx.cs文件,在Page_Load事件里面注册一下AjaxPro
1      private   void  Page_Load( object  sender, System.EventArgs e)
2          {
3            // 在此处放置用户代码以初始化页面
4            AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm1));
5        }
     下面就进入Ajax的世界了,在WebForm2.aspx.cs里写入下的一个方法
1 [AjaxPro.AjaxMethod]
2          public   int   add( int  a, int  b)
3          {
4            return a+b;
5        }
      注意,方法必须是public的,而且方法前必须有[AjaxPro.AjaxMethod]这样才能在客户端掉用这个方法。
然后在WebForm2.aspx的HTML页面中的<head>区域中加入javascript代码来调用服务器端的方法。
 1          < script >
 2      function  getadd()
 3      {
 4        var a=parseInt(document.getElementById("a").value);
 5        var b=parseInt(document.getElementById("b").value);
 6        var c=ajax.WebForm2.add(a,b).value;
 7       document.all.result.innerHTML=c;
 8       document.all.result.style.color="red";
 9    }

10     
11          </ script >

看上面的javascript代码,当我第一次写着段代码时,费了一番的功夫,当然,不是说不会,而是里面的细节问题
如,在服务器段,我定义的方法add()返回值是int,而如果直接调用也就是说如果把var c=ajax.WebForm2.add(a,b).value;改成var c=ajax.WebForm2.add(a,b)那么在页面上获得的值是[object Object]而非真正想要的结果。所以我总结了一下客户端从服务器端获得的值基本上是object类型的,所以得在后面加上.vlaue.
   string 类型
     int    类型
  DateTime类型
当然了,在以后的学习和开发过程中还会有总结的。下面是完整的代码:

 1 <% @ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="ajax.WebForm2"  %>
 2 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"  >
 3 < HTML >
 4      < HEAD >
 5          < title > WebForm2 </ title >
 6          < meta  name ="GENERATOR"  Content ="Microsoft Visual Studio .NET 7.1" >
 7          < meta  name ="CODE_LANGUAGE"  Content ="C#" >
 8          < meta  name ="vs_defaultClientScript"  content ="JavaScript" >
 9          < meta  name ="vs_targetSchema"  content ="http://schemas.microsoft.com/intellisense/ie5" >
10          < script >
11    function getadd()
12    {
13        var a=parseInt(document.getElementById("a").value);
14        var b=parseInt(document.getElementById("b").value);
15        var c=ajax.WebForm2.add(a,b).value;
16       document.all.result.innerHTML=c;
17       document.all.result.style.color="red";
18    }

19    
20        
</ script >
21      </ HEAD >
22      < body  MS_POSITIONING ="GridLayout" >
23          < form  id ="Form1"  method ="post"  runat ="server" >
24              < FONT  face ="宋体" >
25                  < asp:TextBox  id ="a"  style ="Z-INDEX: 101; LEFT: 176px; POSITION: absolute; TOP: 80px"  runat ="server" ></ asp:TextBox >
26                  < asp:TextBox  id ="b"  style ="Z-INDEX: 102; LEFT: 176px; POSITION: absolute; TOP: 112px"  runat ="server" ></ asp:TextBox >
27                  < asp:Label  id ="result"  style ="Z-INDEX: 103; LEFT: 368px; POSITION: absolute; TOP: 104px"  runat ="server" > Label </ asp:Label >< INPUT  style ="Z-INDEX: 104; LEFT: 184px; POSITION: absolute; TOP: 176px"  type ="button"
28                     value ="Button"  onclick ="getadd()" ></ FONT >
29          </ form >
30      </ body >
31 </ HTML >
32

WebForm2.aspx.cs代码:
 1 using  System;
 2 using  System.Collections;
 3 using  System.ComponentModel;
 4 using  System.Data;
 5 using  System.Drawing;
 6 using  System.Web;
 7 using  System.Web.SessionState;
 8 using  System.Web.UI;
 9 using  System.Web.UI.WebControls;
10 using  System.Web.UI.HtmlControls;
11
12 namespace  ajax
13 {
14    /// <summary>
15    /// WebForm2 的摘要说明。
16    /// </summary>

17    public class WebForm2 : System.Web.UI.Page
18    {
19        protected System.Web.UI.WebControls.TextBox a;
20        protected System.Web.UI.WebControls.TextBox b;
21        protected System.Web.UI.WebControls.Label result;
22    
23        private void Page_Load(object sender, System.EventArgs e)
24        {
25            // 在此处放置用户代码以初始化页面
26            AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm2));
27        }

28        [AjaxPro.AjaxMethod]
29        public int  add(int a,int b)
30        {
31            return a+b;
32        }

33
34        Web 窗体设计器生成的代码
54    }

55}

56
恩,这是我的第一个,当然了以后还会继续努力的。


 

 

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