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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

在ASP.NET Atlas中調(diào)用Web Service—直接在ASPX頁面上暴露Web Method

2019-11-18 17:11:35
字體:
供稿:網(wǎng)友

作者:Dflying Chen(http://dflying.VEVb.com/
前面的一系列的文章都是直接調(diào)用單獨的一個Web Service,而在實際項目開發(fā)中,特別是在對現(xiàn)有的項目轉(zhuǎn)換中,把頁面中的邏輯再提取到專門的Web Service中往往會帶來相當(dāng)多的工作。Atlas充分考慮到了這一點,允許您將服務(wù)器端的public方法加上[WebMethod]屬性以允許客戶端javaScript的直接調(diào)用。

想允許客戶端直接調(diào)用定義在aspX頁面中的方法,您需要指定該方法為public,并且添加[WebMethod]屬性,例如如下定義在ASPX文件中的服務(wù)器端方法:

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

 

在客戶端,Atlas將為您Mashup出一個AddInt的Javascript方法,存在于一個特殊的命名空間PageMethods中,這樣您就可以通過PageMethods.AddInt()調(diào)用上面的方法了。
同時,將WebMethod定義到ASPX頁面中,您還可以在該方法中訪問一切頁面上的服務(wù)器端控件的值和ViewState,并且整個頁面的的生存周期將和傳統(tǒng)的asp.net頁面PostBack一樣,諸如Page_Load等方法均會被調(diào)用,可以讓我們對頁面有更強的訪問能力。不過這樣也帶來了性能上的折扣,因為每次調(diào)用Web Method的時候都會把頁面上的ViewState和控件的值傳回給服務(wù)器,并且服務(wù)器端處理整個頁面的生存周期將要比僅僅處理一個純粹的定義在ASMX中的Web Method要復(fù)雜的多。所以這里我推薦盡可能的使用純粹的Web Service,請參考:在Atlas服務(wù)器端實現(xiàn)中推薦使用Web Service而不是Page Method。

下面來看一個實例,首先來定義在ASPX中的WebMethod,可以看到這里不單單求兩個數(shù)的和,還訪問了一個頁面上的服務(wù)器端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" />
然后兩個用來輸入加數(shù)的input以及用來觸發(fā)服務(wù)器調(diào)用的input:

<input id="value1" type="text" value="1" />
<input id="value2" type="text" value="2" />
<input id="btnAdd" type="button" value="Add!" onclick="return btnAdd_onclick()" />
還有一個服務(wù)器端TextBox:

<asp:TextBox ID="tbServer" runat="server" Text="Server control"></asp:TextBox>
最后是JavaScript調(diào)用,注意PageMethods這個內(nèi)建的命名空間:

function btnAdd_onclick() {
    PageMethods.AddInt(
        $('value1').value,
        $('value2').value,
        OnComplete
    );
}
function OnComplete(result)
{
    alert(result);
}
瀏覽器中運行,輸入兩個加數(shù),然后在Server端的TextBox中輸入一些字符,點擊Add,可以看到Server端的TextBox的值卻是被訪問到了:


這是Fiddler截獲的網(wǎng)絡(luò)傳輸,可以看到ViewState和TextBox都被傳回了Server:


該實例程序的源代碼可以在此下載:http://m.survivalescaperooms.com/Files/dflying/WebMethodOnPage.zip


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 侯马市| 甘孜县| 九台市| 澄江县| 芜湖市| 遂昌县| 桦甸市| 德格县| 台北市| 南昌市| 台中县| 德州市| 新兴县| 乌恰县| 苏尼特左旗| 阿坝县| 大荔县| 舒兰市| 运城市| 隆林| 疏附县| 宽甸| 望谟县| 西峡县| 云阳县| 茌平县| 板桥市| 通河县| 乌审旗| 吴堡县| 咸丰县| 安丘市| 邳州市| 东光县| 宜州市| 旅游| 濉溪县| 香河县| 黔东| 益阳市| 广元市|