Ho 2 domande:ActionResult vs JsonResult
Qual è la differenza tra JsonResult e ActionResult?
Quando utilizzare JSONResult in MVC?
Ho 2 domande:ActionResult vs JsonResult
Qual è la differenza tra JsonResult e ActionResult?
Quando utilizzare JSONResult in MVC?
Usa JsonResult
quando si desidera restituire i dati JSON prime per essere consumato da un client (javascript in una pagina web o un client mobile).
Utilizzare ActionResult
se si desidera restituire una vista, reindirizzare ecc. Per essere gestiti da un browser.
ActionResult
è una classe astratta che un'azione può restituire.
I metodi helper in Controller
(ad esempio, Json()
, Content()
, View()
, ...) tornare diverse classi concrete che ereditano ActionResult
, tra cui JsonResult
.
È necessario dichiarare che i metodi di azione restituiscono ActionResult
, in modo che possano restituire qualsiasi classe di risultato concreta.
[MSDN elenca le diverse implementazioni concrete di ActionResult ] (http://msdn.microsoft.com/en-us/library/system.web.mvc.actionresult (v = vs.118) .aspx) –
'È necessario dichiarare i metodi di azione come restituire ActionResult, in modo che avere la libertà di restituire qualsiasi risultato concreto non sono d'accordo. Dovresti essere il più specifico possibile sui tipi di ritorno e il più generale possibile per gli argomenti. 'JsonResult' è il tipo corretto da restituire nella maggior parte dei casi, poiché altri metodi potrebbero usare il metodo e voler esaminare' .Data' che è esposto solo in 'JsonResult'. – Rob
@Rob: non chiamare i metodi di azione direttamente. Se è necessario esporre un valore ad un altro codice, spostarlo in un metodo di supporto. – SLaks
Secondo il MSDN documentation per il ActionResult
:
La classe ActionResult Incapsula il risultato di un metodo di azione e viene utilizzato per eseguire un'operazione a livello di quadro per conto del metodo di azione.
Un metodo di azione risponde all'input dell'utente eseguendo il lavoro e restituendo un risultato di azione. Un risultato di azione rappresenta un comando che il framework eseguirà per conto del metodo di azione . La classe ActionResult è la classe base per l'azione si traduce
E per JsonResult:
rappresenta una classe che viene utilizzato per inviare contenuti in formato JSON alla risposta .
JsonResult
questo è un po 'più complesso, ma ancora non molto. Ha anche hardcoded il suo ContentType, ma ciò che lo rende un po 'più complesso è che utilizza un JavaScriptSerializer hardcoded per serializzare i dati JSON prima di scriverlo direttamente alla risposta.
questo post può essere utile
http://brendan.enrick.com/post/types-of-aspnet-mvc-3-action-results.aspx
ActionResult
è una classe astratta . JsonResult
è il sottotipo di ActionResult
. Quindi possiamo restituire il contenuto di JSON in entrambi i tipi.
si dovrebbe vedere quella domanda man :) http://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it – Lemo