Actionresult vs JSONresult
Asked Answered
H

5

39

I have 2 questions:

  1. What is the difference between JSONResult and ActionResult?

  2. When to use JSONResult in MVC?

Hultgren answered 6/3, 2013 at 15:9 Comment(1)
you should see that question man :) #384192Ta
T
39

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.

Tribunal answered 6/3, 2013 at 15:12 Comment(4)
MSDN lists the different concrete implementations of ActionResultReilly
You should declare your action methods as returning ActionResult, so that they have the freedom to return any concrete result class I disagree. You should be specific as possible about return types, and as general as possible for arguments. JsonResult is the proper type to return in most cases, as other methods may use the method and want to inspect .Data which is only exposed in JsonResult.Karylkarylin
@Rob: You should not call action methods directly. If you need to expose a value to other code, move it to a helper method.Tribunal
@Tribunal While I agree in general that it might be worthy of a helper method, it's entirely acceptable for a test to call the method directly. If you define your method as returning JSON, and one day you decide to return XML, you'll catch it early via tests. Or you might think twice about changing an API which used to always return JSON. It's a bit of a code smell to return either View() or Json() on the same controller method. Return types should always be specific, whether or not they should be called directly.Karylkarylin
J
20

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.

Julieannjulien answered 6/3, 2013 at 15:11 Comment(0)
P
5

ActionResult is an abstract class .JsonResult is subtype of ActionResult. So we can return json content in both types.

Percuss answered 14/10, 2015 at 10:44 Comment(0)
A
1

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.

Abroach answered 6/3, 2013 at 15:20 Comment(0)
C
1

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

Clambake answered 8/3, 2013 at 10:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.