Гибкий подход для создания разных выходов на основе запроса
public class AuctionsController : Controller
{
public ActionResult Auction(long id)
{
var db = new DataContext();
var auction = db.Auctions.Find(id);
// Respond to AJAX requests
if (Request.IsAjaxRequest())
return PartialView("Auction", auction);
// Respond to JSON requests
if (Request.IsJsonRequest())
return Json(auction);
// Default to a "normal" view with layout
return View("Auction", auction);
}
}
Метод Request.IsAjaxRequest()
довольно прост: он просто проверяет заголовки HTTP для входящего запроса, чтобы узнать, соответствует ли значение X -Requested-С заголовком XMLHttpRequest
, который автоматически добавляется большинством браузеров и фреймворками AJAX.
Пользовательский метод расширения, чтобы проверить, является ли запрос для json или нет, чтобы мы могли его вызвать из любого места, как метод расширения Request.IsAjaxRequest ():
using System;
using System.Web;
public static class JsonRequestExtensions
{
public static bool IsJsonRequest(this HttpRequestBase request)
{
return string.Equals(request["format"], "json");
}
}