ASP.NETWebAPI和JQ创建简单Web应用

看了dudu的《HttpClient + ASP.NET Web API, WCF之外的另一个选择》一文,想起多很久之前体现ASP.NET Web API而创建的一个Demo。这是一个只涉及到简单CRUD操作的Web应用,业务逻辑以Web API的形式定义并以服务的形式发布出来,前台通过jQuery处理用户交互并调用后台服务。[源代码从这里下载]

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、虚拟空间、营销软件、网站建设、岱岳网站维护、网站推广。

一、一个简单的基于CRUD的Web应用

这个简单的Demo应用用于模拟“联系人管理”。当页面加载的时候,所有的联系人列表被列出来。在同一个页面中,我们可以添加一个新的联系人,也可以修改和删除现有联系人信息。整个应用***的页面在浏览器中的呈现效果如下图所示。

#p#

二、通过ASP.NET Web API提供服务

我们来简单介绍作为Web API形式发布的联系人管理服务的定义,先来看看用于表示联系人的Contact类型的定义。

 
 
 
 
  1. public class Contact
  2. {
  3.     public string Id { get; set; }
  4.     public string FirstName { get; set; }
  5.     public string LastName { get; set; }
  6.     public string PhoneNo { get; set; }
  7.     public string EmailAddress { get; set; }
  8. }

“联系人服务”以具有如下定义的ContactController的形式定义,它是ApiController的子类。简单起见,我们采用静态字段作为对联系人信息的存储。ContactController定义了Get、Put、Post和Delete用于进行对联系人的获取、添加、修改和删除操作。我想对Web API不了解的人会感概,为了什么采用常用的四个HTTP方法作为操作的名称,因为它们在默认的情况下就可以映射为HTTP请求的方法。

 
 
 
 
  1. public class ContactController : ApiController
  2. {
  3.     private static List contacts = new List
  4.     {
  5.         new Contact{ Id="001", FirstName = "San", LastName="Zhang", PhoneNo="123", EmailAddress="zhangsan@gmail.com"},
  6.         new Contact{ Id="002",FirstName = "Si", LastName="Li", PhoneNo="456", EmailAddress="lisi@gmail.com"}
  7.     };
  8.         
  9.     public IEnumerable Get()
  10.    {
  11.        return contacts;
  12.    }
  13.    public Contact Get(string id)
  14.    {
  15.        return contacts.FirstOrDefault(c => c.Id == id);
  16.    }
  17.    public void Put(Contact contact)
  18.    {
  19.        if (string.IsNullOrEmpty(contact.Id))
  20.        {
  21.            contact.Id = Guid.NewGuid().ToString();
  22.        }
  23.        contacts.Add(contact);
  24.    }
  25.    public void Post(Contact contact)
  26.    {
  27.        Delete(contact.Id);
  28.        contacts.Add(contact);
  29.    }
  30.    public void Delete(string id)
  31.    {
  32.        Contact contact = contacts.FirstOrDefault(c => c.Id == id);
  33.        contacts.Remove(contact);
  34.    }

和ASP.NET MVC Web应用一样,我们同样采用URL路由机制来实现请求地址与目标Controller和Action的映射,而针对API默认注册的路有如下所示。

 
 
 
 
  1. public class MvcApplication : System.Web.HttpApplication
  2. {
  3.     //...
  4.     public static void RegisterRoutes(RouteCollection routes)
  5.     {
  6.          //...
  7.         routes.MapHttpRoute(
  8.             name: "DefaultApi",
  9.             routeTemplate: "api/{controller}/{id}",
  10.            defaults: new { id = RouteParameter.Optional }
  11.        );

按照注册的路由规则和Action方法名称与HTTP方法的默认影射机制,我们可以直接在浏览器中分别访问地址“/api/contact”和“/api/contact/001”得到所有联系人列表和ID为“001”的联系人信息。得到的结果如下图所示。

#p#

三、通过JQuery消费服务

我们通过ASP.NET MVC来构建Web应用,默认的HomeController定义如下,默认的Index操作仅仅是将默认的View呈现出来而已。

 
 
 
 
  1. public class HomeController : Controller
  2. {
  3.     public ActionResult Index()
  4.     {
  5.         return View();
  6.     }
  7. }

View中对用户操作的相应和对后台服务的调用都通过JQuery来完成,整个View的定义如下所示。

 
 
 
 
  1.         $(function () {
  2.             loadAllContacts();
  3.            }
  4.          )
  5.      
  6.         function loadAllContacts() {
  7.             $.ajax({
  8.                 url     : "api/contact",
  9.                type    : "GET",
  10.                dataType: "json",
  11.                success : function (data) { renderContactList(data) }
  12.               }
  13.            );        
  14.        }    
  15.        function renderContactList(contacts) {
  16.            var html = "";
  17.            html += "
  18. ";
  19.            for (i = 0; i < contacts.length; i++) {
  20.                html += "
  21. ";
  22.            }
  23.            html += "
  24. ";
  25.            html += "
  26. First NameLast NamePhone No.Email Address
    " + contacts[i].FirstName + ""
  27.                     + contacts[i].LastName + "
  28. " + contacts[i].PhoneNo + ""
  29.                     + "" + "
  30. "
  31.                     + "Update     "
  32.                     + "Delete" + "
  33. " + "" + ""
  34.                + "" + "
  35. "
  36.                + "" + "
  37. "
  38.                + "" + "
  39.                + "Create " + "
  40. ";
  41.            $("#contacts").html(html);
  42.            $("table tr:odd").addClass("oddRow");
  43.        }    
  44.        function deleteContact(id) {
  45.            $.ajax({
  46.                url     : "api/contact/" + id,
  47.                type    : "DELETE",
  48.                success : function () { loadAllContacts();}
  49.            });
  50.        }
  51.     
  52.        function updateContact(id) {
  53.            var emailAddress = $("#" +id).attr("value");
  54.            $.ajax({
  55.                url     : "api/contact/" + id,
  56.                type    : "GET",
  57.                success : function (contact) {
  58.                    contact.EmailAddress = emailAddress;
  59.                    update(contact);
  60.                }
  61.            });
  62.        }    
  63.        function update(contact) {
  64.            $.ajax({
  65.                url         : "api/contact/",
  66.                type        : "POST",
  67.                data        : contact,
  68.                contentType : "application/json",
  69.                success     : function () { loadAllContacts(); }
  70.            });
  71.        }
  72.     
  73.        function addContact() {
  74.            var contact = new Object();
  75.            contact.FirstName       = $("#firstName").attr("value");
  76.            contact.LastName        = $("#lastName").attr("value");
  77.            contact.PhoneNo         = $("#phoneNo").attr("value");
  78.            contact.EmailAddress    = $("#emailAddress").attr("value");
  79.            $.ajax({
  80.                url         : "api/contact/",
  81.                type        : "PUT",
  82.                data        : contact,
  83.                contentType : "application/json",
  84.                success     : function () { loadAllContacts(); }
  85.            });
  86.        }
  87.     

本文标题:ASP.NETWebAPI和JQ创建简单Web应用
网站路径:http://www.shufengxianlan.com/qtweb/news26/395476.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

猜你还喜欢下面的内容

关键词优化知识

分类信息网