What is the difference between ViewResult() and ActionResult() in ASP.NET MVC?

Technology CommunityCategory: ASP.NET MVCWhat is the difference between ViewResult() and ActionResult() in ASP.NET MVC?
VietMX Staff asked 3 years ago
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 and PartialViewResult.

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