AJAX.NET使用者開發指南(2)

來源:互聯網
上載者:User
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函數)同時帶有一個額外的定製屬性。這個屬性是用來處理伺服器響應的回呼函數:
  • Ajax: 一個建立Web應用的新途徑
  • Ajax的錯誤處理機制探討(2)
  • Ajax的錯誤處理機制探討(1)
  • 初次體驗.NET Ajax無重新整理技術
  • Rails系統中的AJAX開發技術簡析(4)


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.