轉(zhuǎn)帖|其它|編輯:郝浩|2011-06-03 15:59:18.000|閱讀 416 次
概述:頁面方法只是頁面代碼類中所暴露的帶有WebMethod特性的公共靜態(tài)方法。頁面方法和支持AJAX的Web服務(wù)的運行時引擎幾乎相同。使用頁面方法,我們不用創(chuàng)建和發(fā)布服務(wù)。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
頁面方法只是頁面代碼類中所暴露的帶有WebMethod特性的公共靜態(tài)方法。頁面方法和支持AJAX的Web服務(wù)的運行時引擎幾乎相同。使用頁面方法,我們不用創(chuàng)建和發(fā)布服務(wù)。
頁面方法的定義
在頁面代碼類中定義公共靜態(tài)方法,并為其添加WebMethod特性,便會將ASP.NET AJAX頁面轉(zhuǎn)化為Web服務(wù):
public class TimeServicePage : System.Web.UI.Page{
[WebMethod]
public static DateTime GetTime()
{
return DateTime.Now;
}} 我們可以在頁面方法中使用任何數(shù)據(jù)類型,所有類型在調(diào)用期間都會被轉(zhuǎn)換為JSON格式。
我們也可以在aspx源文件中以內(nèi)聯(lián)方式定義Web方法:
<script type="text/C#" runat="server">
[WebMethod]
public static DateTime GetTime()
{
return DateTime.Now;
}</script> 注意,頁面方法針對的是給定的ASP.NET頁面,只有宿主頁面才能調(diào)用自身的Web方法,不支持跨頁面調(diào)用。
頁面方法的啟用
如果ASP.NET AJAX頁面的代碼類中包含WebMethod修飾的靜態(tài)方法,運行時引擎會生成與Web服務(wù)一樣的JavaScript代理類。我們可使用該類的實現(xiàn)來調(diào)用服務(wù)器方法。該類的名稱會被硬編碼為PageMethods.
注意,頁面方法在默認(rèn)情況下是被禁用的。為啟用它,我們必須將腳本管理器的EnablePageMethods屬性設(shè)為true.
<asp:ScriptManager runat="server" ID="ScriptManager1" EnablePageMethods="true" />
為能執(zhí)行頁面方法,必須在web.config文件中HTTP模塊ScriptModule:
<httpModules>
<add name="ScriptModule"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions" /></httpModules> 該模塊的工作過程是,監(jiān)聽會話狀態(tài)加載后的應(yīng)用程序事件,執(zhí)行頁面方法,然后為調(diào)用者生成響應(yīng)。由于獲取會話狀態(tài)是在啟動頁面生命周期之前執(zhí)行的,所以,這種方法調(diào)用不會建立頁面的生命周期,也不會進行子控件的初始化和處理。
頁面方法的使用
頁面方法的集合會以固定的類名暴露給JavaScript代碼--PageMethods.該類會列出所有靜態(tài)方法,且該類不需自行實例化。
PageMethods代理類
與Web服務(wù)的代理類不同,PageMethods代理類總會以內(nèi)聯(lián)腳本的形式嵌在引用它的頁面主體中。否則,對于不同的頁面,該類的名稱應(yīng)各不相同。該類的結(jié)構(gòu)幾乎與AJAX Web服務(wù)代理類的結(jié)構(gòu)相同。
頁面方法的執(zhí)行
以上述代碼中的GetTime方法為例:
function getTime(){
PageMethods.GetTime(methodCompleted);
}
function methodCompleted(results, context, methodName){
var displayString = results.format("ddd, dd MMMM yyyy");
$get("Label1")。innerHTML = displayString;} 通過頁面方法,我們能夠使用HttpContext的Current屬性訪問視圖狀態(tài)、ASP.NET Cache、User和其他內(nèi)部對象。HTTP上下文針對的不是頁面的生命周期,它在接到請求后就存在,并一直伴隨著請求而存在。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載