在asp.net mvc中有ViewResult用于返回一个View和ActionResult来返回你想要的任何东西,所以当我确定我会返回一个View时,为什么我应该使用ViewResult而不是ActionResult呢? / p>
答案 0 :(得分:12)
ActionResult
是一般基类,所有其他结果都来自ViewResult
,JsonResult
等。
这样,您可以从同一方法返回多种类型的结果,如JSON和XML。
答案 1 :(得分:6)
出于同样的原因,你不会写每个类的每个方法来返回“对象”。你应该尽可能具体。如果您计划编写单元测试,这尤其有用。不再需要测试返回类型和/或转换结果。
答案 2 :(得分:4)
您应该使用ViewResult使代码更具可读性并更容易发现错误,但也可以有其他好处。
由于我使用POST-REDIRECT-GET模式,我编写了一些测试来检查每个[HttpPost]方法是否返回RedirectToRouteResult。如果我在[HttpPost]方法中定义其他类型的结果,它会自动不通过测试。这可以防止我在post方法中返回View(模型)。
答案 3 :(得分:0)
如果要进行单元测试,请在控制器中将其从ActionResult更改为ViewResult。那么你将在你的测试控制器中拥有智能感知,生活是美好的。
答案 4 :(得分:0)
我几天前不小心得到了同样的问题,谷歌很快就来帮忙。基本上这里没有性能问题,如果有的话就是编码问题。
这是一篇简短但有用的博文:http://www.techiesblog.com/post/2862100163/viewresult-vs-actionresult-asp-net-mvc