26

Ich habe 2 Fragen:Action vs JsonResult

  1. Was ist der Unterschied zwischen JsonResult und Action?

  2. Wann JSONResult in MVC verwenden?

+0

Sie sollten diese Frage sehen Mann :) http://StackOverflow.com/Questions/383692/what-is-json-and-why-would-i-use-it – Lemo

Antwort

9

Verwenden JsonResult, wenn Sie möchten, JSON-Daten zurück von einem Client (Javascript auf einer Webseite oder einen mobilen Client) verbraucht werden.

Verwenden Sie ActionResult, wenn Sie eine Ansicht, Umleitung usw. zur Bearbeitung durch einen Browser zurückgeben möchten.

31

ActionResult ist eine abstrakte Klasse, die eine Aktion zurückgeben kann.

Die Hilfsmethoden in Controller (zB Json(), Content(), View(), ...) verschiedene konkrete Klassen zurück, die ActionResult erben, einschließlich JsonResult.

Sie sollten Ihre Aktionsmethoden als ActionResult zurückgeben, so dass sie die Freiheit haben, eine konkrete Ergebnisklasse zurückzugeben.

+1

[MSDN listet die verschiedenen konkreten Implementierungen von ActionResult ] (http://msdn.microsoft.com/en-us/library/system.web.mvc.actionresult (v = vs.118) .aspx) –

+0

'Sie sollten Ihre Aktionsmethoden als ActionResult zurückgeben, so dass sie habe die Freiheit, irgendeine konkrete Ergebnisklasse zurückzugeben. Ich stimme nicht zu. Sie sollten so genau wie möglich über Rückgabetypen und so allgemein wie möglich für Argumente sein. 'JsonResult' ist der richtige Typ, der in den meisten Fällen zurückgegeben wird, da andere Methoden die Methode verwenden können und" .Data "untersuchen möchten, die nur in' JsonResult' verfügbar ist. – Rob

+0

@Rob: Sie sollten keine Aktionsmethoden direkt aufrufen. Wenn Sie einen Wert für anderen Code verfügbar machen müssen, verschieben Sie ihn in eine Hilfsmethode. – SLaks

0

Gemäß die MSDN documentation für die ActionResult:

Die Action Klasse kapselt das Ergebnis einer Aktionsmethode und verwendet wird, eine Rahmenebene Betrieb im Namen der Aktion Verfahren durchzuführen.

Eine Aktionsmethode reagiert auf Benutzereingaben, indem sie Arbeit ausführt, und gibt ein Aktionsergebnis zurück. Ein Aktionsergebnis stellt einen Befehl dar, den das Framework im Auftrag der Aktionsmethode ausführt. Die Action Klasse ist die Basisklasse für Aktions

Ergebnisse

Und für JsonResult:

Stellt eine Klasse dar, die verwendet wird JSON-Format Inhalt an die Antwort zu senden.

0

JsonResult

Dieser ist ein wenig komplexer, aber immer noch nicht sehr. Es hat auch hardcoded sein ContentType, aber was macht es ein bisschen komplexer ist , dass es einen hardcoded JavaScriptSerializer verwendet, um die JSON Daten zu serialisieren, bevor Sie es direkt auf die Antwort schreiben.

Dieser Beitrag kann
http://brendan.enrick.com/post/types-of-aspnet-mvc-3-action-results.aspx

3

ActionResult ist eine abstrakte Klasse hilfreich sein. JsonResult ist Untertyp von ActionResult. So können wir JSON-Inhalte in beiden Typen zurückgeben.