Problem
Consider:
public ViewResult Index()
{
return View();
}
public ActionResult Index()
{
return View();
}
- ActionResult is an abstract class.
- ViewResult derives from ActionResult. Other derived classes include
JsonResult
andPartialViewResult
.
The only difference is that with the ActionResult
one, your controller isn’t promising to return a view – you could change the method body to conditionally return a RedirectResult
or something else without changing the method definition.
And some ActionResult
subtypes are:
- ViewResult – Renders a specifed view to the response stream
- PartialViewResult – Renders a specifed partial view to the response stream
- EmptyResult – An empty response is returned
- RedirectResult – Performs an HTTP redirection to a specifed URL
- RedirectToRouteResult – Performs an HTTP redirection to a URL that is determined by the routing engine, based on given route data
- JsonResult – Serializes a given ViewData object to JSON format
- JavaScriptResult – Returns a piece of JavaScript code that can be executed on the client
- ContentResult – Writes content to the response stream without requiring a view
- FileContentResult – Returns a file to the client
- FileStreamResult – Returns a file to the client, which is provided by a Stream
- FilePathResult – Returns a file to the client