Ajax.NET Professional
Microsoft.NET Framework 2.0
Ajax.net Professional簡介:
Ajax.net 是一個針對.NET平台Ajax的服務端架構(微軟也有一個稱之為Atlas的架構,關於Atlas請參看Dflying Chen的Blog),它能讓你在用戶端調用.NET方法,你還可以獲得相關的原始碼.不過它的許可協議不是很明確。
聯絡原作者: http://weblogs.asp.net/mschwarz/contact.aspx
原作者的Blog: http://weblogs.asp.net/mschwarz/
如果你有問題或是找到了Bug請訪問: Google group Ajax.NET Professional.
原作者的郵件地址:
Michael Schwarz
Meisenweg 2
90547 Stein, Germany
下載Ajax.NET Pro(5.11.4.2),包括針對.NET1.1(C#)和.NET2.0(C#/VB.NET).
讓我們先從這裡開始吧:Ajax.NET新手指引
首先,添加對AjaxPro.2.dll的引用(對於.NET Framework 1.1 添加AjaxPro.dll)
然後,添加設定檔web.config,添加如下幾行:
1<?xml version="1.0" encoding="utf-8"?>
2<configuration>
3 <appSettings/>
4 <connectionStrings/>
5 <system.web>
6 <httpHandlers>
7 <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
8 </httpHandlers>
9 []
10 </system.web>
11</configuration>
12
意思是所有的ajaxpro/*.ashx請求都由Ajax.PageHandlerFactory處理,而不是由預設的System.Web.UI.PageHandlerFactory處理常式工廠來處理。
現在我們寫個AjaxMethod伺服器端方法,他和普通的伺服器方法唯一不同的地方就是他必須要在方法的上面添加個[AjaxPro.AjaxMethod],代碼如下:
1 [AjaxPro.AjaxMethod]
2 public int AddTwo(int firstInt, int secondInt)
3 {
4 return firstInt + secondInt;
5 }
要想在用戶端使用Javascript調用.NET方法,你還必須註冊這些方法:
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
4 }
最後,我們再寫用戶端指令碼來調用伺服器方法(代碼裡有詳細的注釋)。
以下是前台Default.aspx代碼:
1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4<html xmlns="http://www.w3.org/1999/xhtml">
5<head id="Head1" runat="server">
6 <title>Untitled Page</title>
7</head>
8<body>
9 <form id="form1" runat="server">
10 <div>
11 <input id="Text1" type="text" onchange="add()"/>
12 +
13 <input id="Text2" type="text" onchange="add()"/>
14 =
15 <span id="result"></span>
16 </div>
17 </form>
18
19 <script type="text/javascript">
20 function add()
21 {
22 var a=document.getElementById('Text1').value;
23 var b=document.getElementById('Text2').value;
24 var a1 = parseInt(a);
25 var b1 = parseInt(b);
26
27 _Default.AddTwo(a1,b1,getAdd_callback); // 非同步呼叫伺服器端方法
28 }
29
30 function getAdd_callback(rel)
31 {
32 //MyDemo._Default.GetServerTime()得到從伺服器傳來的資料是object,要寫.value
33 document.getElementById("result").innerHTML=rel.value;
34 }
35
36 </script>
37
38</body>
39</html>
40
以下是完整的後台Default.aspx.cs代碼:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
[AjaxPro.AjaxMethod]
public int AddTwo(int firstInt, int secondInt)
{
return firstInt + secondInt;
}
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
}