首页 > 开发 > AJAX > 正文

浅析Asp.net MVC 中Ajax的使用

2024-09-01 08:28:25
字体:
来源:转载
供稿:网友

一、使用System.Web.Mvc.Ajax

  1.1 System.Web.Mvc.Ajax.BeginForm

  1.2 System.Web.Mvc.Ajax.ActionLink

二、手工打造自己的“非介入式”Javascript”

一、使用System.Web.Mvc.Ajax

 

1.1 System.Web.Mvc.Ajax.BeginForm

     第一步:用Ajax.BeginForm创建Form

  @using (Ajax.BeginForm(    new AjaxOptions()    {      HttpMethod = "post",      Url = @Url.Action("Index","Reviews"),      InsertionMode = InsertionMode.Replace,      UpdateTargetId = "restaurantList",      LoadingElementId = "loding",      LoadingElementDuration = 2000    }))  {     <input type="search" name="searchItem"/>     <input type="submit" value="按名称搜索"/>  }

       最终生成的form如下:

 <form id="form0" method="post"     data-ajax-url="/Reviews"    data-ajax-update="#restaurantList"    data-ajax-mode="replace"    data-ajax-method="post"    data-ajax-loading-duration="2000"    data-ajax-loading="#loding"    data-ajax="true"    action="/Reviews" novalidate="novalidate">

第二步:创建Ajax.BeginForm的new AjaxOptions()对象的Url指向的Action

 new AjaxOptions()    {       ...      Url = @Url.Action("Index","Reviews")         ...       }    public ActionResult Index(string searchKey = null)    {      var model = _restaurantReviews.Where(r => searchKey == null || r.Name.ToLower().Contains(searchKey.ToLower().Trim()))        .OrderByDescending(r => r.Rating)        .Take(100)        .Select(r=>new RestaurantReview()        {          City = r.City,          Country = r.Country,          Id = r.Id,          Name = r.Name,          Rating = r.Rating        }).ToList();      if (Request.IsAjaxRequest())      {        System.Threading.Thread.Sleep(1000 * 3);//模拟处理数据需要的时间        //return View(model)会返回整个页面,所以返回部分视图。        return PartialView("_RestaurantPatialView", model);      }      return View(model);    }

 注意:

    关于使用System.Web.Mvc.Ajax的说明:

       Controller的Action方法:

         (1)当显式添加[HttpPost],传给System.Web.Mvc.Ajax的AjaxOptions()的HttpMethod只能为 "post",

         (2)当显式添加[HttpGet],传给System.Web.Mvc.Ajax的AjaxOptions()的HttpMethod只能为 "get",

         (3)当都没有显式添加[HttpPost]和[HttpGet],传给System.Web.Mvc.Ajax的AjaxOptions()的HttpMethod可以为 "get"也可以为"post",

      第三步:添加要承载更新页面的html元素,

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表