Действия контроллера ASP.NET MVC, которые возвращают JSON или частичный HTML - PullRequest
387 голосов
/ 23 октября 2008

Я пытаюсь создать действия контроллера, которые будут возвращать либо JSON, либо частичный html в зависимости от параметра. Каков наилучший способ асинхронно вернуть результат на страницу MVC?

Ответы [ 11 ]

0 голосов
/ 28 марта 2018

Гибкий подход для получения различных результатов на основе запроса

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...