在ASP.NET中實現AJAX(四)

來源:互聯網
上載者:User
自訂轉換器

 

我們已經看到,Ajax .NET封裝器能夠處理很多不同的.NET類型。但是除了大量.NET類和內建類型以外,封裝器對不能正確返回的其他類型僅僅調用ToString()。為了避免這種情況,Ajax .NET封裝器允許開發人員建立對象轉換器,用於在伺服器和客戶機之間平滑傳遞複雜物件。

其他事項

在其他類中註冊函數

上面的例子中,我們的伺服器端函數都放在執行頁面背後的代碼中。但是,沒有理由不能把這些函數放在單獨的類檔案中。要記住,封裝器的工作方式是在指定類中發現所有帶Ajax.AjaxMethod的方法。需要的類通過第二個指令碼標籤指定。使用Ajax.Utility.RegisterTypeForAjax,我們可以指定需要的任何類。比如,將我們的伺服器端函數作為單獨的類是合情合理的:

Public Class AjaxFunctions

<Ajax.AjaxMethod()> _

Public Function Validate(username As String, password As String) As Boolean

'do something

'Return something

End Function

End Class

通過指定類的類型而不是頁面就可以讓Ajax封裝器建立代理:

private void Page_Load(object sender, EventArgs e){

Ajax.Utility.RegisterTypeForAjax(typeof(AjaxFunctions));

//...

}

要記住,用戶端代理的名稱是<ClassName>.<ServerSideFunctionName>。因此,如果ServerSideAdd函數放在上面虛構的AjaxFunctions類中,用戶端調用就應該是: AjaxFunctions.ServerSideAdd(1,2)。

代理到底是如何工作的

Ajax工具產生的第二個指令碼標籤(也可以手工插入)傳遞了頁面的名稱空間、類名和程式集。根據這些資訊,Ajax.PageHandlerFactory就能夠使用反射得到具有特定屬性的任何函數的詳細資料。顯然,處理函數尋找具有AjaxMethod屬性的函數並得到它們的簽名(傳回型別、名稱和參數),從能夠建立必要的用戶端代理。具體而言,封裝器建立一個和類同名的JavaScript對象,該對象提供代理。換句話說,給定一個帶有Ajax ServerSideAdd方法的伺服器端類AjaxFunctions,我們就會得到公開ServerSideAdd函數的AjaxFunction JavaScript對象。如果將瀏覽器指向第二個指令碼標籤的路徑就會看到這種動作。

返回Unicode字元

Ajax .NET封裝器能夠從伺服器向客戶機返回Unicode字元。為此,資料在返回之前必須在伺服器上用html編碼。比如:

[Ajax.AjaxMethod]

public string Test1(string name, string email, string comment){

string html = "";

html += "Hello " + name + "<br>";

html += "Thank you for your comment <b>";

html += System.Web.HttpUtility.HtmlEncode(comment);

html += "</b>.";

return html;

}

http://www.shpan.com/Detail.asp?ID=399

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.