ajaxwebservice:ASP.NET AJAX异步访问WebService来源: 发布时间:星期六, 2009年3月28日 浏览:0次 评论:0
使用过ASP.NET AJAX朋友都知道,如何通过ASP.NET AJAX在客户端访问WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也没什么大差别. 在ASP.NET应用里使用ASP.NET AJAX访问WebService通常都是通过ScriptMananger引入WebService生成客户端代理思路方法,同时也可以使用Microsoft Ajax Library来完成.本文将介绍在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService(ScriptManager和Microsoft Ajax Library两种方式). 1.准备工作 新建ASP.NET MVC应用,如果是Microsoft ASP.NET MVC CodePlex Preview 5新建MVC应用后将会自动引入Microsoft Ajax Library,如下截图: 在上面新建ASP.NET MVC应用项目里Views文件目录下新建立Ajax目录,然后在里面添加新ASP.NET MVC页面AjaxPage.aspx.如下图: 我们转到AjaxPage.aspx代码文件就会发现,页面类由原来继承Page类变为了ViewPage,如下: 1MvcAndAjax.Views.Ajax 2{ 3publicpartialAjaxPage:ViewPage 4{ 5} 6} OK,此时我们AjaxPage.aspx是不能运行,要让其可以正常运行起来我们还得帮帮它,在Controllers文件下新建Controller,命名为:AjaxController.在里面为AjaxPage.aspx定义个Action思路方法AjaxPage: 1MvcAndAjax.Controllers 2{ 3publicAjaxController:Controller 4{ 5publicActionResultAjaxPage 6{ 7View; 8} 9} 10} 现在我们就可以在浏览器上通过:http://localhost:2048/Ajax/AjaxPage来访问该MVC页了.(此地址只是本机调试) 2. 在ASP.NET MVC里使用ScriptManager在客户端异步访问WebService OK,上面准备工作完成了,下面我们就来看看在客户端如何通过ScriptManager来访问WebSerivice. 首先开发WebService,新建WebService(AjaxService.asmx),并提供给客户端思路方法.如下代码: 1MvcAndAjax.Services 2{ 3[WebService(Namespace="http://tempuri.org/")] 4[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)] 5[ToolboxItem(false)] 6[.Web.Script.Services.ScriptService] 7publicAjaxService:.Web.Services.WebService 8{ 9 10[WebMethod] 11publicUsersGetUser 12{ 13Users 14{ 15ID=1, 16Name="zhangsan", 17Password="123456" 18}; 19} 20 21[WebMethod] 22publicUsersSetUser(id,name,pwd) 23{ 24Users 25{ 26ID=id, 27Name=name, 28Password=pwd 29}; 30} 31} 32} 此WebService用到了自定义Users对象,Users对象定义如下: 1MvcAndAjax 2{ 3publicUsers 4{ 5publicID{get;;} 6publicName{get;;} 7publicPassword{get;;} 8} 9} 同传统ASP.NET样,我们需要在aspx页面加入ScriptManagerControl控件,通过Control控件Services属性将需要访问WebService引入本页以生成客户端代理. 1<asp:ScriptManagerID="ScriptManager1"runat="server"> 2<Services> 3<asp:ServiceReferencePath="~/Services/AjaxService.asmx"/> 4</Services> 5</asp:ScriptManager> WebService提供了两个让客户端可以思路方法GetUser,SetUser,前个就直接返回个Users对象,后者则是根据页面传递过来数据(JSON串)构造个Users对象返回给客户端.前端页面设计: ="cnblogs_code_Collapse" id="Code_Closed_Text_185103">页面HTML代码 1<body> 2<formid="form1"runat="server"> 3<div> 4<asp:ScriptManagerID="ScriptManager1"runat="server"> 5<Services> 6<asp:ServiceReferencePath="~/Services/AjaxService.asmx"/> 7</Services> 8</asp:ScriptManager> 9<inputid="btnRequest"type="button"value="GetUser"onclick="btnRequest_onclick"/> 10<hr/> 11<divid="result"></div> 12 13<hr/> 14<inputid="txtID"type="text"/><br/> 15<inputid="txtName"type="text"/><br/> 16<inputid="txtPassword"type="text"/><br/> 17<inputid="Button1"type="button"value="SetUser"onclick="btnRequestClick"/> 18</div> 19</form> 20</body> 在可户端也和传统ASP.NET里样,通过[命名空间.类名.思路方法名(参数列表....)]这种方式WebService. 1<scriptlanguage="javascript"type="text/javascript"> 2functionbtnRequest_onclick 3{ 4MvcAndAjax.Services.AjaxService.GetUser(success); 5} 6 7functionbtnRequestClick 8{ 9varjsonUser={ 10"ID":$get("txtID").value, 11"Name":$get("txtName").value, 12"Passwrod":$get("txtPassword").value 13}; 14MvcAndAjax.Services.AjaxService.SetUser(jsonUser,success); 15} 16 17functionsuccess(result) 18{ 19varuser=String.format("ID:{0}<br/>Name:{1}<br/>Password:{1}",result.ID,result.Name,result.Password); 20$get("result").innerHTML=user; 21} 22</script> 和传统ASP.NET样,这里就不作详细介绍,本文后面将提供举例下载,可以直接查看举例. 3. 通过Microsoft Ajax Library在客户端异步访问WebService 使用Library很简单,的前使用是ScriptManager,要使用Library其实也就是用它来代替ScriptManager去完成引入WebService到客户端以生成客户端代理.OK,下面我们将页面上ScriptManager去掉,在页面<head>下引入Microsoft Ajax Library.并通过Microsoft Ajax Library来生成客户端代理.代码如下: 1<scripttype="text/javascript"src="http://www.cnblogs.com/Content/MicrosoftAjax.js"></script> 2<scripttype="text/javascript"src="/Services/AjaxService.asmx/js"></script> 我们只需要如上引入Microsoft Ajax Library,然后生成WebService客户端代理就可以了,现在运行便如上面使用ScriptManager引入WebService生成客户端代理样. 0
相关文章
读者评论发表评论 |
|