Ich versuche, Controller-Aktionen zu erstellen, die je nach Parameter entweder JSON oder partielles HTML zurückgeben. Wie kann das Ergebnis am besten asynchron auf eine MVC-Seite zurückgegeben werden?
ajax
asp.net-mvc
json
asp.net-ajax
NathanD
quelle
quelle
Ich denke, Sie sollten die AcceptTypes der Anfrage berücksichtigen. Ich verwende es in meinem aktuellen Projekt, um den richtigen Inhaltstyp wie folgt zurückzugeben.
Ihre Aktion auf dem Controller kann sie wie auf dem Anforderungsobjekt testen
Sie können dann den Aspx der Ansicht implementieren, um den partiellen xhtml-Antwortfall zu berücksichtigen.
Dann können Sie es in jQuery abrufen und den Typparameter als json übergeben:
Hoffe das hilft James
quelle
Eine weitere gute Möglichkeit, mit JSON-Daten umzugehen, ist die Verwendung der JQuery-Funktion getJSON. Sie können die anrufen
Methode aus der jquery getJSON-Methode durch einfaches ...
quelle
return Json(new {foo="bar", baz="Blech"});
!Ich habe einige Probleme beim Implementieren von MVC Ajax GET-Aufrufen mit JQuery festgestellt, die mir Kopfschmerzen bereiteten, sodass ich hier Lösungen austauschte.
JsonRequestBehavior.AllowGet
; ohne diese MVC gab einen HTTP 500-Fehler zurück (mitdataType: json
auf dem Client angegeben).cache: false
Sie dem Aufruf $ .ajax hinzu, andernfalls erhalten Sie letztendlich HTTP 304-Antworten (anstelle von HTTP 200-Antworten) und der Server verarbeitet Ihre Anfrage nicht.Beispiel JQuery:
Beispiel für einen MVC-Code:
quelle
Um die andere Hälfte der Frage zu beantworten, können Sie anrufen:
wenn Sie teilweise HTML zurückgeben möchten. Sie müssen nur einen Weg finden, um zu entscheiden, ob die Anforderung JSON oder HTML möchte, möglicherweise basierend auf einem URL-Teil / Parameter.
quelle
Alternative Lösung mit Incoding-Framework
Aktion return json
Regler
Rasiermesserseite
Aktion HTML zurückgeben
Regler
Rasiermesserseite
quelle
Vielleicht möchten Sie sich diesen sehr hilfreichen Artikel ansehen, der dies sehr schön behandelt!
Ich dachte nur, es könnte Leuten helfen, die nach einer guten Lösung für dieses Problem suchen.
http://weblogs.asp.net/rashid/archive/2009/04/15/adaptive-rendering-in-asp-net-mvc.aspx
quelle
PartialViewResult und JSONReuslt erben von der Basisklasse ActionResult. Wenn also der Rückgabetyp dynamisch festgelegt wird, deklarieren Sie die Methodenausgabe als ActionResult.
quelle
Für Leute, die auf MVC 3 aktualisiert haben, ist MVC3 und Json eine gute Möglichkeit
quelle
quelle
Flexibler Ansatz zur Erzeugung unterschiedlicher Ausgaben basierend auf der Anforderung
Das
Request.IsAjaxRequest()
Methode ist recht einfach: Sie überprüft lediglich die HTTP-Header auf eingehende Anforderungen, um festzustellen, ob der Wert des X-Requested-With-Headers lautetXMLHttpRequest
, der von den meisten Browsern und AJAX-Frameworks automatisch angehängt wird.Benutzerdefinierte Erweiterungsmethode, um zu überprüfen, ob die Anforderung für json ist oder nicht, damit wir sie von überall aufrufen können, genau wie bei der Erweiterungsmethode Request.IsAjaxRequest ():
Quelle: https://www.safaribooksonline.com/library/view/programming-aspnet-mvc/9781449321932/ch06.html#_javascript_rendering
quelle