国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在ASP.NET Atlas中調用Web Service—直接在ASPX頁面上暴露Web Metho

2024-07-10 13:10:35
字體:
來源:轉載
供稿:網友

作者:dflying chen(http://dflying.cnblogs.com/
前面的一系列的文章都是直接調用單獨的一個web service,而在實際項目開發中,特別是在對現有的項目轉換中,把頁面中的邏輯再提取到專門的web service中往往會帶來相當多的工作。atlas充分考慮到了這一點,允許您將服務器端的public方法加上[webmethod]屬性以允許客戶端javascript的直接調用。

想允許客戶端直接調用定義在aspx頁面中的方法,您需要指定該方法為public,并且添加[webmethod]屬性,例如如下定義在aspx文件中的服務器端方法:

<script runat="server">
    [webmethod]
    public int addint(int int1, int int2)
    {
        return int1 + int2;
    }
</script>

 

在客戶端,atlas將為您mashup出一個addint的javascript方法,存在于一個特殊的命名空間pagemethods中,這樣您就可以通過pagemethods.addint()調用上面的方法了。
同時,將webmethod定義到aspx頁面中,您還可以在該方法中訪問一切頁面上的服務器端控件的值和viewstate,并且整個頁面的的生存周期將和傳統的asp.net頁面postback一樣,諸如page_load等方法均會被調用,可以讓我們對頁面有更強的訪問能力。不過這樣也帶來了性能上的折扣,因為每次調用web method的時候都會把頁面上的viewstate和控件的值傳回給服務器,并且服務器端處理整個頁面的生存周期將要比僅僅處理一個純粹的定義在asmx中的web method要復雜的多。所以這里我推薦盡可能的使用純粹的web service,請參考:在atlas服務器端實現中推薦使用web service而不是page method。

下面來看一個實例,首先來定義在aspx中的webmethod,可以看到這里不單單求兩個數的和,還訪問了一個頁面上的服務器端textbox的值:

<script runat="server">
    [webmethod]
    public string addint(int int1, int int2)
    {
        return (int1 + int2).tostring() + string.format("/r/nand the server textbox's text is '{0}'.", tbserver.text);
    }
</script>

 

然后是頁面的scriptmanager,這里無需添加任何引用了: <atlas:scriptmanager id="scriptmanager" runat="server" />
然后兩個用來輸入加數的input以及用來觸發服務器調用的input:

<input id="value1" type="text" value="1" />
<input id="value2" type="text" value="2" />
<input id="btnadd" type="button" value="add!" />
還有一個服務器端textbox:

<asp:textbox id="tbserver" runat="server" text="server control"></asp:textbox>
最后是javascript調用,注意pagemethods這個內建的命名空間:

function btnadd_onclick() {
    pagemethods.addint(
        $('value1').value,
        $('value2').value,
        oncomplete
    );
}
function oncomplete(result)
{
    alert(result);
}
瀏覽器中運行,輸入兩個加數,然后在server端的textbox中輸入一些字符,點擊add,可以看到server端的textbox的值卻是被訪問到了:


這是fiddler截獲的網絡傳輸,可以看到viewstate和textbox都被傳回了server:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景宁| 锦屏县| 阜宁县| 长治县| 正镶白旗| 泰宁县| 昆山市| 博白县| 咸阳市| 大丰市| 庄河市| 博野县| 清水县| 都江堰市| 东兴市| 龙岩市| 中西区| 新竹县| 西丰县| 健康| 三江| 宜昌市| 平塘县| 永安市| 宜良县| 宁强县| 卢湾区| 当阳市| 霍邱县| 辉县市| 东阿县| 万年县| 瓦房店市| 石林| 十堰市| 宁蒗| 阿拉善右旗| 龙口市| 嘉黎县| 新兴县| 雷州市|