Гибкий подход для получения различных результатов на основе запроса
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-With 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");
}
}
Источник: https://www.safaribooksonline.com/library/view/programming-aspnet-mvc/9781449321932/ch06.html#_javascript_rendering