ViewResult V/S ActionResult

Man*_*ani 5 asp.net-mvc asp.net-mvc-3

如何决定是使用ActionResult还是ViewResult?我知道ActionResult是一个以ViewResult作为子类型的抽象类,但我已经看到了将这两个用于相同功能的示例.它们之间有什么区别吗?

Ehs*_*jad 19

ActionResult是基类型,ViewResult而是子类型ActionResult.

设置Action的返回类型时ActionResult,可以返回它的任何子类型,例如Json,PartialView,View,RedirectToAction.

但是当您使用子类型时,就像在这种情况下一样,ViewResult您将操作它将仅返回子类型作为结果,在本例中为View.

当您使用ActionResult返回类型时,您可以从Action返回以下内容(这意味着以下是ActionResult的子类型),如forums.asp.net中所述:

ActionResult是一个通用结果类型,可以有几个子类型(来自"ASP.NET MVC 1.0 Quickly" Book):

a)ViewResult

将指定的视图呈现给响应流

b)PartialViewResult

将指定的部分视图呈现给响应流

c)EmptyResult

基本上什么都不做; 给出一个空的回应

d)RedirectResult

执行HTTP重定向到指定的URL

e)RedirectToRouteResult

根据给定的路由数据,对路由引擎确定的URL执行HTTP重定向

f)JsonResult

将给定的ViewData对象序列化为JSON格式

g)JavaScriptResult

返回一段可在客户端上执行的JavaScript代码

h)ContentResult

将内容写入响应流而无需视图

i)FileContentResult

将fle返回给客户端

j)FileStreamResult

返回由客户端提供的文件,由客户端提供

k)FilePathResult

将fle返回给客户端

何时使用ViewResult

如果您确定您的操作方法将返回某个视图页面,则可以使用ViewResult.但是,如果您的操作方法可能具有不同的行为,例如渲染视图或执行重定向.您可以使用更通用的基类ActionResult作为返回类型.

更多细节:

http://forums.asp.net/t/1448398.aspx

你也可以在这里参考:

http://www.slideshare.net/umarali1981/difference-between-action-result-and-viewresult