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?
Antwort
Zu viele Anzeigen?
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");
}
}
- See previous answers
- Weitere Antworten anzeigen