首先从网上下载一个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 窗体设计器生成的代码#region Web 窗体设计器生成的代码
35
override protected void OnInit(EventArgs e)
36
{
37
//
38
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
39
//
40
InitializeComponent();
41
base.OnInit(e);
42
}
43
44
/**//// <summary>
45
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
46
/// 此方法的内容。
47
/// </summary>
48
private void InitializeComponent()
49
{
50
this.Load += new System.EventHandler(this.Page_Load);
51
52
}
53
#endregion
54
}
55
}
56
恩,这是我的第一个,当然了以后还会继续努力的。