26

mam 2 pytania:ActionResult vs JsonResult

  1. Jaka jest różnica między JsonResult i ActionResult?

  2. Kiedy używać JSONResult w MVC?

+0

powinieneś zobaczyć tego człowieka pytanie :) http://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it – Lemo

Odpowiedz

9

Zastosowanie JsonResult gdy chcesz powrócić do surowych danych JSON być spożywane przez klienta (JavaScript na stronie internetowej lub telefonu klienta).

Użyj ActionResult, jeśli chcesz zwrócić widok, przekierować itp. Do obsługi przez przeglądarkę.

31

ActionResult to klasa abstrakcyjna, którą akcja może powrócić.

Metody pomocnicze w Controller (np Json(), Content(), View() ...) zwracają różne konkretnych klas, które dziedziczą ActionResult, w tym JsonResult.

Powinieneś zadeklarować swoje metody działania jako zwracające ActionResult, aby mogły one zwrócić konkretną klasę wyników.

+1

[MSDN wymienia różne konkretne implementacje ActionResult ] (http://msdn.microsoft.com/en-us/library/system.web.mvc.actionresult (v = vs.118) .aspx) –

+0

'Powinieneś zadeklarować swoje metody działania jako zwracające ActionResult, aby mieć wolność zwracania jakiejkolwiek konkretnej klasy wyników "Nie zgadzam się. Powinieneś być jak najbardziej konkretny odnośnie do typów zwrotów i możliwie jak najbardziej ogólnych dla argumentów. 'JsonResult' jest właściwym typem zwracanym w większości przypadków, ponieważ inne metody mogą używać tej metody i chcą sprawdzić' .Data', który jest ujawniony tylko w 'JsonResult'. – Rob

+0

@Rob: Nie powinieneś bezpośrednio wywoływać metod akcji. Jeśli musisz wystawić wartość na inny kod, przenieś go do metody pomocniczej. – SLaks

0

Według MSDN documentation do ActionResult:

Klasa ActionResult kapsułkuje się rezultat metody działania i jest używana do wykonywania operacji ramy poziomu imieniu działania metody.

Metoda działania reaguje na dane wprowadzane przez użytkownika wykonując pracę i zwracając wynik akcji przez . Wynik działania reprezentuje polecenie, które struktura wykona w imieniu metody działania. Klasa ActionResult jest klasą bazową dla działania wynika

a dla JsonResult:

Reprezentuje klasę, która jest używana do wysyłania treści w formacie JSON do odpowiedzi .

0

JsonResult

Ten jest nieco bardziej skomplikowane, ale nadal nie bardzo. Ma również na stałe swój ContentType, ale co czyni go nieco bardziej złożonym jest , że używa zakodowanego JavaScriptSerializer do serializacji danych JSON przed napisaniem go bezpośrednio do odpowiedzi.

Ten post może być pomocny
http://brendan.enrick.com/post/types-of-aspnet-mvc-3-action-results.aspx

3

ActionResult jest klasa abstrakcyjna. JsonResult jest podtypem ActionResult. Tak więc możemy zwrócić zawartość json w obu typach.

Powiązane problemy