mam 2 pytania:ActionResult vs JsonResult
Jaka jest różnica między JsonResult i ActionResult?
Kiedy używać JSONResult w MVC?
mam 2 pytania:ActionResult vs JsonResult
Jaka jest różnica między JsonResult i ActionResult?
Kiedy używać JSONResult w MVC?
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ę.
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.
[MSDN wymienia różne konkretne implementacje ActionResult ] (http://msdn.microsoft.com/en-us/library/system.web.mvc.actionresult (v = vs.118) .aspx) –
'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
@Rob: Nie powinieneś bezpośrednio wywoływać metod akcji. Jeśli musisz wystawić wartość na inny kod, przenieś go do metody pomocniczej. – SLaks
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 .
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
ActionResult
jest klasa abstrakcyjna. JsonResult
jest podtypem ActionResult
. Tak więc możemy zwrócić zawartość json w obu typach.
powinieneś zobaczyć tego człowieka pytanie :) http://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it – Lemo