ASP.NET MVC中使用ASP.NET AJAX异步访问WebService

简介:

使用过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,如下:
1  namespace  MvcAndAjax.Views.Ajax
2  {
3       public   partial   class  AjaxPage : ViewPage
4      {
5      }
6  }
     OK,此时我们的AjaxPage.aspx是不能运行的,要让其可以正常的运行起来我们还得帮帮它,在Controllers文件下新建一Controller,命名为:AjaxController.在里面为AjaxPage.aspx定义一个Action方法AjaxPage():
 1  namespace  MvcAndAjax.Controllers
 2  {
 3       public   class  AjaxController : Controller
 4      {
 5           public  ActionResult AjaxPage()
 6          {
 7               return  View();
 8          }
 9      }
10  }
 
     现在我们就可以在浏览器上通过: [url]http://localhost:2048/Ajax/AjaxPage[/url]来访问该MVC页了.(此地址只是本机调试)

 
2. 在ASP.NET MVC里使用ScriptManager在客户端异步访问WebService
     OK,上面的准备工作完成了,下面我们就来看看在客户端怎么通过ScriptManager来访问WebSerivice.
     首先开发WebService,新建一WebService(AjaxService.asmx),并提供给客户端调用的方法.如下代码:
 1  namespace  MvcAndAjax.Services
 2  {
 3      [WebService(Namespace  =   " [url]http://tempuri.org/[/url] " )]
 4      [WebServiceBinding(ConformsTo  =  WsiProfiles.BasicProfile1_1)]
 5      [ToolboxItem( false )]
 6      [System.Web.Script.Services.ScriptService]
 7       public   class  AjaxService : System.Web.Services.WebService
 8      {
 9 
10          [WebMethod]
11           public  Users GetUser()
12          {
13               return   new  Users
14              {
15                  ID  =   1 ,
16                  Name  =   " zhangsan " ,
17                  Password  =   " 123456 "
18              };
19          }
20 
21          [WebMethod]
22           public  Users SetUser( int  id, string  name, string  pwd)
23          {
24               return   new  Users
25              {
26                  ID  =  id,
27                  Name  =  name,
28                  Password  =  pwd
29              };
30          }
31      }
32  }
     此WebService用到了自定义的Users对象,Users对象的定义如下:
1  namespace  MvcAndAjax
2  {
3       public   class  Users
4      {
5           public   int  ID {  get set ;}
6           public   string  Name {  get set ; }
7           public   string  Password {  get set ; }
8      }
9  }
     同传统的ASP.NET一样,我们需要在aspx页面加入ScriptManager控件,通过控件的Services属性将需要访问的WebService引入本页以生成客户端代理.
1  < asp:ScriptManager  ID ="ScriptManager1"  runat ="server" >
2       < Services >
3           < asp:ServiceReference  Path ="~/Services/AjaxService.asmx"   />
4       </ Services >
5  </ asp:ScriptManager >
 
     WebService提供了两个让客户端可以调用的方法GetUser(),SetUser(),前一个就直接返回一个Users对象,后者则是根据页面传递过来的数据(JSON串)构造一个Users对象返回给调用客户端.前端调用页面设计:
                         
页面HTML代码
 
     在可户端调用也和传统的ASP.NET里调用一样,通过[命名空间.类名.方法名(参数列表....)]这种方式调用WebService.
 1  < script language = " javascript "  type = " text/javascript " >
 2  function  btnRequest_onclick()
 3  {
 4      MvcAndAjax.Services.AjaxService.GetUser(success);
 5  }
 6 
 7  function  btnRequestClick()
 8  {
 9       var  jsonUser  =  {
10                   " ID " :$get( " txtID " ).value,
11                   " Name " :$get( " txtName " ).value,
12                   " Passwrod " :$get( " txtPassword " ).value
13      };
14      MvcAndAjax.Services.AjaxService.SetUser(jsonUser,success);
15  }
16 
17  function  success(result)
18  {
19       var  user = 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  < script type = " text/javascript "  src = " [url]http://www.cnblogs.com/Content/MicrosoftAjax.js[/url] " >< / script>
2  < script type = " text/javascript "  src = " /Services/AjaxService.asmx/js " >< / script>
     
     我们只需要如上引入Microsoft Ajax Library,然后生成WebService的客户端代理就可以了,现在运行程序便如上面使用ScriptManager引入WebService生成客户端代理一样.
     
     本文就介绍到这里,详细可下载示例程序查看.
     示例程序下载: 点击下载




本文转自 beniao 51CTO博客,原文链接:http://blog.51cto.com/beniao/104186,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
存储 开发框架 前端开发
asp.net与asp.net优缺点及示例
asp.net与asp.net优缺点及示例
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
30天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
60 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
3月前
|
JSON 前端开发 JavaScript
探秘 AJAX:让网页变得更智能的异步技术(下)
探秘 AJAX:让网页变得更智能的异步技术(下)
探秘 AJAX:让网页变得更智能的异步技术(下)
|
3月前
|
XML 前端开发 JavaScript
探秘 AJAX:让网页变得更智能的异步技术(上)
探秘 AJAX:让网页变得更智能的异步技术(上)
探秘 AJAX:让网页变得更智能的异步技术(上)
|
3月前
|
开发框架 安全 搜索推荐
分享105个NET源码ASP源码,总有一款适合您
分享105个NET源码ASP源码,总有一款适合您
27 4
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
7月前
|
开发框架 前端开发 .NET
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
174 0
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!