stickout

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  当Controller接收到用户端要求时,通常会依据不同的要求类型来响应不同的内容,例如,一般正常的网页浏览,你可能会响应ViewResult显示一个视图页面,但通过Ajax过来的Http请求,可能就会想响应JsonResult或HttpStatusCodeResult等。

  如果我们希望在同一个Action方法中判断用户端是否通过Ajax的方式存取,在ASP.NET MVC 里提供了一个Request.IsAjaxRequest()扩充方法能够判断,使用范例如下:

 1 [HttpPost]
 2 //因为知道要通过Ajax调用这个Action,所以可以先标示[HttpPost]属性
 3 public ActionResult Remove(int ProductId)
 4 {
 5     var existingCart = this.Carts.FirstOrDefault(p => p.Product.Id == ProductId);
 6     if (existingCart != null)
 7     {
 8         this.Carts.Remove(existingCart);
 9     }
10     if (Request.IsAjaxRequest())
11     {
12         return new HttpStatusCodeResult(System.Net.HttpStatusCode.OK);
13     }
14     else
15     {
16         return RedirectToAction("Index","Cart");
17     }
18             
19 }

 

  用户端使用Ajax发出要求,通常都是为了取得网页的部分内容,因此在实务上也经常会用IsAjaxRequest这个扩充方法来区分ViewResult与PartialViewResult,如下范例:

1 public ActionResult GetBanner()
2 {
3     var data = db.Banner.ToList();
4 
5     if (Request.IsAjaxRequest())
6         return PartialView(data);
7     else
8         return View(data);
9 }

 

 

posted on 2014-05-14 14:09  stickout  阅读(162)  评论(0编辑  收藏  举报