ASP.NET 3.5核心編程學習筆記(58):利用頁面方法來進行遠程調用

來源:互聯網
上載者:User

  頁面方法只是頁面代碼類中所暴露的帶有WebMethod特性的公用靜態方法。頁面方法和支援AJAX的Web服務的運行時引擎幾乎相同。使用頁面方法,我們不用建立和發布服務。

頁面方法的定義

  在頁面代碼類中定義公用靜態方法,並為其添加WebMethod特性,便會將ASP.NET AJAX頁面轉化為Web服務:

public class TimeServicePage : System.Web.UI.Page
{
[WebMethod]
public static DateTime GetTime()
{
return DateTime.Now;
}
}

  我們可以在頁面方法中使用任何資料類型,所有類型在調用期間都會被轉換為JSON格式。

  我們也可以在aspx源檔案中以內聯方式定義Web方法:

<script type="text/C#" runat="server">
[WebMethod]
public static DateTime GetTime()
{
return DateTime.Now;
}
</script>

  注意,頁面方法針對的是給定的ASP.NET頁面,只有宿首頁面才能調用自身的Web方法,不支援跨頁面調用。

頁面方法的啟用

  如果ASP.NET AJAX頁面的代碼類中包含WebMethod修飾的靜態方法,運行時引擎會產生與Web服務一樣的JavaScript代理類。我們可使用該類的實現來調用伺服器方法。該類的名稱會被寫入程式碼為PageMethods。

  注意,頁面方法在預設情況下是被禁用的。為啟用它,我們必須將指令碼管理器的EnablePageMethods屬性設為true。

<asp:ScriptManager runat="server" ID="ScriptManager1" EnablePageMethods="true" />

  為能執行頁面方法,必須在web.config檔案中HTTP模組ScriptModule:

<httpModules>
<add name="ScriptModule"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions" />
</httpModules>

  該模組的工作過程是,監聽工作階段狀態載入後的應用程式事件,執行頁面方法,然後為調用者產生響應。由於擷取工作階段狀態是在啟動頁面生命週期之前執行的,所以,這種方法調用不會建立頁面的生命週期,也不會進行子控制項的初始化和處理。

頁面方法的使用

  頁面方法的集合會以固定的類名暴露給JavaScript代碼--PageMethods。該類會列出所有靜態方法,且該類不需自行執行個體化。

PageMethods代理類

  與Web服務的代理類不同,PageMethods代理類總會以內聯指令碼的形式嵌在引用它的頁面主體中。否則,對於不同的頁面,該類的名稱應各不相同。該類的結構幾乎與AJAX Web服務代理類的結構相同。

頁面方法的執行
  以上述代碼中的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屬性訪問檢視狀態、ASP.NET Cache、User和其他內部對象。HTTP上下文針對的不是頁面的生命週期,它在接到請求後就存在,並一直伴隨著請求而存在。

聯繫我們

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