我想知道为什么在大多数MVC示例代码中,几乎每个控制器方法都返回ActionResult,即使很明显该代码只能返回一种类型的结果。我知道有某些情况下这样做是有必要的,比如根据逻辑可能返回RedirectResult或ViewResult等,但大多数方法并非如此。
这不就相当于在方法上设置返回类型为“object”吗?为什么不直接指定JsonResult、FileResult或ViewResult作为返回类型呢?难道我没有看到的好处就是把每个控制器方法的返回类型设置为ActionResult吗?
典型案例:
public ActionResult Index()
{
return View();
}
为什么这似乎是常态而不是这样:
public ViewResult Index()
{
return View();
}
编辑:目前为止,除了一个回复外,所有回复都表明ActionResult只是更通用的。我知道这一点。 :) 但是,为什么在控制器方法上接受这种做法,而不是在任何其他地方呢?您不会在普通方法中返回类型的最高级基类,而通常会尝试返回最具体的类型。是什么让控制器方法如此不同,以至于博客作者和“示例代码编写者”(是的,我创造了这个术语)会只返回ActionResult?