【发布时间】:2010-11-04 12:40:05
【问题描述】:
作为 ASP.NET MVC 的新手,我一直想知道 Controller 方法的签名。在我见过的所有示例中,它们似乎总是返回 ActionResult,即使它们实际上返回 ViewResult 实例或类似实例。
这是一个常见的例子:
public ActionResult Index()
{
return this.View();
}
在这种情况下,将方法声明为public ViewResult Index() 并获得更强的类型支持不是更有意义吗?
实验表明这是可行的,所以它似乎是可能的。
我确实意识到可能存在需要多态性的情况(例如,如果您只想在某些情况下重定向,但在其他情况下显示视图),但如果方法 always 返回视图,我会发现 ViewResult 更可取。
就未来的兼容性而言,ActionResult 显然提供了更健壮的签名,但如果一个人控制了整个代码库,那么如果将来需要的话,总是可以将方法的签名更改为更通用的返回类型。
是否还有其他我不知道的注意事项,或者我应该继续使用特定的返回类型声明我的控制器方法?
【问题讨论】:
标签: asp.net-mvc polymorphism actionresult viewresult