438 Stimmen

ASP.NET MVC-Controller-Aktionen, die JSON oder Teil-HTML zurückgeben

Ich versuche, Controller-Aktionen zu erstellen, die entweder JSON oder teilweise html je nach einem Parameter zurückgeben wird. Was ist der beste Weg, um das Ergebnis asynchron an eine MVC-Seite zurückzugeben?

2voto

Mannan Bahelim Punkte 1289

Flexibler Ansatz zur Erstellung unterschiedlicher Ergebnisse je nach Anforderung

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);
  }
}

En Request.IsAjaxRequest() Methode ist recht einfach: Sie überprüft lediglich die HTTP-Header der eingehenden Anfrage, um festzustellen, ob der Wert des X-Requested-With-Headers XMLHttpRequest die von den meisten Browsern und AJAX-Frameworks automatisch angefügt wird.

Benutzerdefinierte Erweiterungsmethode, um zu prüfen, ob die Anfrage für json ist oder nicht, so dass wir sie von überall aus aufrufen können, genau wie die Erweiterungsmethode Request.IsAjaxRequest():

using System;
using System.Web;

public static class JsonRequestExtensions
{
  public static bool IsJsonRequest(this HttpRequestBase request)
  {
    return string.Equals(request["format"], "json");
  }
}

Quelle: https://www.safaribooksonline.com/library/view/programming-aspnet-mvc/9781449321932/ch06.html#_javascript_rendering

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X