26

Ho 2 domande:ActionResult vs JsonResult

  1. Qual è la differenza tra JsonResult e ActionResult?

  2. Quando utilizzare JSONResult in MVC?

+0

si dovrebbe vedere quella domanda man :) http://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it – Lemo

risposta

9

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.

31

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.

+1

[MSDN elenca le diverse implementazioni concrete di ActionResult ] (http://msdn.microsoft.com/en-us/library/system.web.mvc.actionresult (v = vs.118) .aspx) –

+0

'È 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

+0

@Rob: non chiamare i metodi di azione direttamente. Se è necessario esporre un valore ad un altro codice, spostarlo in un metodo di supporto. – SLaks

0

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 .

0

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

3

ActionResult è una classe astratta . JsonResult è il sottotipo di ActionResult. Quindi possiamo restituire il contenuto di JSON in entrambi i tipi.

Problemi correlati