在ASP.NET Atlas中調(diào)用Web Service_.Net教程
推薦:ASP.NET中MD5和SHA1加密的幾種方法MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest開發(fā)出來,經(jīng)md2、md3和md4發(fā)展而來。它
Atlas Framework中包含了對(duì)AJAX調(diào)用的封裝,讓您可以很方便的在客戶端通過JavaScript調(diào)用服務(wù)器端方法。在本篇文章中,我將解釋一下如何使用Atlas調(diào)用服務(wù)器端Web Service。
使用Atlas,我們只需要如下步驟即可調(diào)用服務(wù)器端Web Service:
在Web Service的方法上加上[WebMethod]屬性。
在ASPX頁面上的ScriptManager中添加對(duì)這個(gè)Web Service的引用。
只需以上兩步,Atlas會(huì)在運(yùn)行時(shí)為您生成相應(yīng)的mash up,讓您可在客戶端JavaScript中通過WebServiceClassName.ServiceMethodName()調(diào)用該方法。
讓我們先來看一個(gè)最簡(jiǎn)單的例子,調(diào)用服務(wù)器端Web Service得到兩個(gè)數(shù)的和:
首先建立一個(gè)Web Service:SimpleWebService.asmx,并在其中添加一個(gè)Service Method,不要忘記標(biāo)記為[WebMethod]哦: [WebMethod]
public int AddInt(int int1, int int2)
{
return int1 int2;
}
然后再ASPX頁面上的ScriptManager中添加對(duì)該Web Service的引用:
上面的例子僅僅傳遞簡(jiǎn)單類型,然而在現(xiàn)實(shí)世界中,我們經(jīng)常會(huì)需要傳遞一些復(fù)雜的類型,讓我們看一個(gè)傳遞復(fù)雜類型的例子:
本例子同樣是一個(gè)加法,不過這回操作的類型是復(fù)數(shù)。讓我們先來看看C#中我們的復(fù)數(shù)的定義(作為示例,這里盡可能的簡(jiǎn)化)。注意我們應(yīng)該提供自定義的復(fù)雜類型一個(gè)無參的構(gòu)造函數(shù),以便于Atlas自動(dòng)在C#類型和JavaScript類型中轉(zhuǎn)換:
public class ComplexNumber { private int real; public int Real { get { return real; } set { real = value; } } private int imag; public int Imag { get { return imag; } set { imag = value; } } public ComplexNumber(int real, int imag) { this.real = real; this.imag = imag; } public ComplexNumber() { } } |
然后是實(shí)現(xiàn)復(fù)數(shù)加法的Web Method,寫在同一個(gè)Web Service中:
[WebMethod] public ComplexNumber AddComplexNumber(ComplexNumber num1, ComplexNumber num2) { return new ComplexNumber(num1.Real num2.Real, num1.Imag num2.Imag); } |
相應(yīng)的ASPX頁面中也要添加一些HTML,讓用戶輸入兩個(gè)復(fù)數(shù):
Pass complex type to web service - add the two complex numbers: 然后是相應(yīng)的JavaScript,當(dāng)用戶點(diǎn)擊上面的按鈕時(shí),執(zhí)行這段JavaScript以調(diào)用Web Method。 function btnAddComplex_onclick() { var cplx1 = {Real: $('cplx1r').value, Imag: $('cplx1i').value}; var cplx2 = {Real: $('cplx2r').value, Imag: $('cplx2i').value}; SimpleWebService.AddComplexNumber(cplx1, cplx2, onAddComplextNumberComplete); } function onAddComplextNumberComplete(result) { $('btnAddComplex').value = result.Real.toString() ' ' result.Imag.toString() 'i'; } |
添加點(diǎn)HTML Code,讓用戶輸入兩個(gè)整數(shù): Pass simple type to web service - add the two integers:
再書寫一點(diǎn)JavaScript,當(dāng)用戶點(diǎn)擊上面的按鈕時(shí),調(diào)用Web Method。這里要注意的是JavaScript中調(diào)用Web Method的格式:前面兩個(gè)參數(shù)int1,int2分別對(duì)應(yīng)著Web Service聲明中的兩個(gè)參數(shù),后面一個(gè)參數(shù)onAddIntComplete表示方法成功返回時(shí)的Callback方法,也就是所謂AJAX中的A。同時(shí)需要注意的是$()方法,等同于document.getElementById()。
function btnAddInt_onclick() { var int1 = $('int1').value; var int2 = $('int2').value; SimpleWebService.AddInt(int1, int2, onAddIntComplete); } function onAddIntComplete(result) { $('btnAddInt').value = result; } |
分享:ASP.NET 2.0當(dāng)中的Call Back機(jī)制用過ASP.NET 2.0當(dāng)中的新功能Call Back的朋友們可能會(huì)發(fā)現(xiàn):ASP.NET AJAX當(dāng)中的非同步Web Services調(diào)用很麻煩,還要多建立一個(gè)Web Sevices(.asmx)頁面,如果您嫌額外建立一個(gè).asmx的Web Service
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-在ASP.NET Atlas中調(diào)用Web Service。