熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

ASP.NET 3.5核心編程之利用頁面方法來進行遠程調用

2013-11-15 12:52:14  來源: ASP編程 
    頁面方法只是頁面代碼類中所暴露的帶有WebMethod特性的公共靜態方法頁面方法和支持AJAX的Web服務的運行時引擎幾乎相同使用頁面方法我們不用創建和發布服務
   頁面方法的定義
    在頁面代碼類中定義公共靜態方法並為其添加WebMethod特性便會將ASPNET AJAX頁面轉化為Web服務
    public class TimeServicePage : SystemWebUIPage{
    [WebMethod]
    public static DateTime GetTime()
    {
    return DateTimeNow;
    }}  我們可以在頁面方法中使用任何數據類型所有類型在調用期間都會被轉換為JSON格式
    我們也可以在aspx源文件中以內聯方式定義Web方法
    <script type=text/C# runat=server>
    [WebMethod]
    public static DateTime GetTime()
    {
    return DateTimeNow;
    }</script>  注意頁面方法針對的是給定的ASPNET頁面只有宿主頁面才能調用自身的Web方法不支持跨頁面調用
    頁面方法的啟用
    如果ASPNET AJAX頁面的代碼類中包含WebMethod修飾的靜態方法運行時引擎會生成與Web服務一樣的JavaScript代理類我們可使用該類的實現來調用服務器方法該類的名稱會被硬編碼為PageMethods
    注意頁面方法在默認情況下是被禁用的為啟用它我們必須將腳本管理器的EnablePageMethods屬性設為true
    <asp:ScriptManager runat=server ID=ScriptManager EnablePageMethods=true />
    為能執行頁面方法必須在nfig文件中HTTP模塊ScriptModule:
    <httpModules>
    <add name=ScriptModule
    type=SystemWebHandlersScriptModule SystemWebExtensions /></httpModules>  該模塊的工作過程是監聽會話狀態加載後的應用程序事件執行頁面方法然後為調用者生成響應由於獲取會話狀態是在啟動頁面生命周期之前執行的所以這種方法調用不會建立頁面的生命周期也不會進行子控件的初始化和處理
頁面方法的使用
    頁面方法的集合會以固定的類名暴露給JavaScript代碼PageMethods該類會列出所有靜態方法且該類不需自行實例化
PageMethods代理類
    與Web服務的代理類不同PageMethods代理類總會以內聯腳本的形式嵌在引用它的頁面主體中否則對於不同的頁面該類的名稱應各不相同該類的結構幾乎與AJAX Web服務代理類的結構相同
頁面方法的執行
    以上述代碼中的GetTime方法為例
    function getTime(){
    PageMethodsGetTime(methodCompleted)
    }
    function methodCompleted(results context methodName){
    var displayString = resultsformat(ddd dd MMMM yyyy
    $get(LabelinnerHTML = displayString;}  通過頁面方法我們能夠使用HttpContext的Current屬性訪問視圖狀態ASPNET CacheUser和其他內部對象HTTP上下文針對的不是頁面的生命周期它在接到請求後就存在並一直伴隨著請求而存在
From:http://tw.wingwit.com/Article/program/ASP/201311/21792.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.