问题
I have 2 questions:
What is the difference between JSONResult and ActionResult?
When to use JSONResult in MVC?
回答1:
ActionResult
is an abstract class that an action can return.
The helper methods in Controller
(eg, Json()
, Content()
, View()
, ...) return different concrete classes that inherit ActionResult
, including JsonResult
.
You should declare your action methods as returning ActionResult
, so that they have the freedom to return any concrete result class.
回答2:
Use JsonResult
when you want to return raw JSON data to be consumed by a client (javascript on a web page or a mobile client).
Use ActionResult
if you want to return a view, redirect etc to be handled by a browser.
回答3:
ActionResult
is an abstract class .JsonResult
is subtype of ActionResult
. So we can return json content in both types.
回答4:
According to the MSDN documentation for the ActionResult
:
The ActionResult class Encapsulates the result of an action method and is used to perform a framework-level operation on behalf of the action method.
An action method responds to user input by performing work and returning an action result. An action result represents a command that the framework will perform on behalf of the action method. The ActionResult class is the base class for action results
And for JsonResult:
Represents a class that is used to send JSON-formatted content to the response.
回答5:
JsonResult
This one is a bit more complex, but still not very. It also has hardcoded its ContentType, but what makes it a bit more complex is that it uses a hardcoded JavaScriptSerializer to serialize the JSON data before writing it directly to the response.
this post can be helpful
http://brendan.enrick.com/post/types-of-aspnet-mvc-3-action-results.aspx
来源:https://stackoverflow.com/questions/15250941/actionresult-vs-jsonresult