AJAX.NET用户开发指南(2)

80酷酷网    80kuku.com

  ajax|开发指南

//C#

public class Index : System.Web.UI.Page{
 private void Page_Load(object sender, EventArgs e){
  Ajax.Utility.RegisterTypeForAjax(typeof(Index));
  //...
 }
 //...
}

  对RegisterTypeForAjax方法的调用在页面产生如下的javascript代码(另外一种选择,你也可以人工在页面上添加如下的javascript代码)

<script language="javascript" src="ajax/common.ashx"></script>
<script language="javascript"
src="ajax/NAMESPACE.PAGECLASS,ASSEMBLYNAME.ashx"></script>

  上面这段代码的粗体部分NAMESPACE.PAGECLASS,ASSEMBLYNAME含义如下:


NAMESPACE.PAGECLASS

当前页面的命名空间和类

ASSEMBLYNAME

当前页面的程序集的名称

  下面是在AjaxPlay项目中sample.aspx的示例输出:

<% Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" ... %>
<html>
<head>
<script language="javascript" src="ajax/common.ashx"></script>
<script language="javascript"
src="ajax/AjaxPlay.Sample,AjaxPlay.ashx"></script>

</head>
<body>
<form id="Form1" method="post" runat="server">
...
</form>
</body>
</html>

  你可以测试一下,人工通过浏览器将src path(通过查看源文件并copy)打开,一切都能正常的工作如果输出了无意义的文本表示到目前为止是正确的,如果输出asp.net错误,则表示中间出现了错误

  即使你不了解HttpHandle的工作方式,也应该可以理解上面的描述通过web.config,我们可以确保发送向ajax/*.ashx的请求由我们自定义的句柄来处理,很显然,两个脚本标记由自定义句柄处理

  编写服务端函数

  现在我们编写服务器端函数,他们可以被客户端异步的调用尽管现在还不能支持全部的返回类型,我们仍坚持服务器端添加功能在codebehind文件的页面类里,添加下面的方法:

'VB.Net

<Ajax.AjaxMethod()> _

Public Function ServerSideAdd (byval firstNumber As Integer, byval secondNumber
As Integer) As Integer
Return firstNumber + secondNumber
End Function


//C#

[Ajax.AjaxMethod()]

public int ServerSideAdd(int firstNumber, int secondNumber)
{
 return firstNumber + secondNumber;
}

  注意,这个函数有Ajax.AjaxMethod()定制属性,属性服务会告知ajax封装类为此方法创建一个javascript代理,这样才能被客户端调用

  定制客户端调用

  接下来在客户端用javascript调用函数Ajax封装类会创建一个javascript函数,带有两个参数,名字是 类名.ServerSideAdd作为最基本的功能,我们所需要作的只是调用这个方法并且传递参数:

<% Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" ... %>
<html>
<head>
<script language="javascript" src="ajax/common.ashx"></script>
<script language="javascript"
src="ajax/AjaxPlay.Sample,AjaxPlay.ashx"></script>

</head>

<body>
<form id="Form1" method="post" runat="server">
<script language="javascript">
var response = Sample.ServerSideAdd(100,99);
alert(response.value);
</script>
</form>
</body>
</html>

  当然,我们不能把这么强大的功能仅仅用来通过alert来提醒浏览者,这就是为什么所有的客户端代理(如 类名.ServerSideAdd函数)同时带有一个额外的定制属性这个属性是用来处理服务器响应的回调函数:


分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: