博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF5+MVC4系列(8) ActionResult的返回值
阅读量:6426 次
发布时间:2019-06-23

本文共 2687 字,大约阅读时间需要 8 分钟。

我们在MVC的代码中,经常会看到这样的一个 代码

可能有人会有疑问,既然我定义的是ActionResult,为什么返回值会是View方法呢?

其实这个View方法的返回值的类型是ActionResult的子类ViewResult

 

我们查看MVC源码可以看到 ActionResult是个抽象类,  ActionResult 有多个派生类(子类),有的子类又有子类 (例如 ViewResultBase 就有  ViewResult子类 和  PartialViewResult 这2种子类)

每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回字符串等。我们来看一下ActionResult派生类关系图

最后的图如下

他们的功能和调用方法 如下

 

类名称 子类名称 说明 对应Controller中的方法名
ContentResult     Content
EmptyResult     Empty
JavaScriptResult     JavaScript
JsonResult   返回Json格式的数据 Json
RedirectResult   使用Response.Redirect重定向页面(返回302状态码直接跳转到其他页面) Redirect
HttpStatusCodeResult HttpNotFoundResult 返回一个404状态码(未找到) HttpNotFound
HttpUnauthorizedResult 返回一个401状态码(未授权状态) HttpUnauthorized
FileResult FileContentResult 通过 文件byte[] 写入Response 返回客户端 File
FilePathResult 通过 文件路径 写入Response 返回客户端
FileStreamResult 通过 Stream 写入Response 返回客户端
ViewResultBase PartialViewResult 调用父类ViewResultBase 的ExecuteResult方法. 
重写了父类的FindView方法. 
寻找用户控件.ascx文件
在MVC4中,寻找cshtml视图
PartialView
ViewResult

调用父类ViewResultBase 的ExecuteResult方法. 

重写了父类的FindView方法. 
寻找视图页面(aspx,cshtml或自定义视图)

Controller的View()方法默认封装ViewResult返回结果

View
RedirectToRouteResult   根据Route规则重定向页面 RedirectToRoute

 

public ActionResult Test()        {            //return Content("文字内容",);                     //ContentResult  如果是用重载 指定内容的 MIME类型,还可以输出js脚本            //return Content("
123
","text/xml",Encoding.UTF8); //return new EmptyResult(); //EmptyResult 注意需要new来使用. 这里也可以写成 return null //return JavaScript("alert('xx')"); //JavaScriptResult 这里要注意,前台要通过js或者是jquery来调用这个Action才有效果 //return Redirect("http://www.baidu.com"); //RedirectResult 直接跳转到指定页面 //return HttpNotFound("This Page Not Exist"); //HttpNotFoundResult 返回404 这里还可以自己输入英文文字,如果是汉字,好像乱码 //return new HttpUnauthorizedResult(); //HttpUnauthorizedResult 返回 HTTP 错误 401.0 - Unauthorized 未授权,注意,需要new //return File(Server.MapPath("~/images/logo.png"), "image/png"); //直接在浏览器中显示图片 //return File(Server.MapPath("~/images/logo.png"), "image/png","aa.png"); //让浏览器下载图片(提示下载,而不是显示图片) //return RedirectToRoute(new { action = "list" }); //转到指定路由,这里我只设定了Action为list //return RedirectToAction("Edit", "Home", new { id = 3 }); //转到指定action,可以设置 Action,Controller以及参数 //return PartialView("PartialLogin"); //PartialViewResult //部分视图 一般是前台用ajax来调用 //return View(); //完整视图 return Json(new{id = 1,name = "will",CreatedOn = DateTime.Now}, JsonRequestBehavior.AllowGet); //返回序列化后的json,并且允许ajax使用get方法调用 }

下载

 

 

返回json(已经序列化过了)

 

 

关于上面FileResult下载的3种方式,以及 返回JavaScriptResult和 JsonResult 可以看看下面的2篇文章

转载地址:http://cfyga.baihongyu.com/

你可能感兴趣的文章
XFire WebService开发快速起步
查看>>
JavaScript 函数replace揭秘
查看>>
QTP解决内嵌IE窗体方法2
查看>>
“王子”的演讲:N828印象
查看>>
判断JS字符串中是否包含某些字符
查看>>
Phalanger---PHP的.NET编译器
查看>>
Scanner----java控制台和文件读取的利器(java 5新增)
查看>>
如何安全设定和检测你的密码安全性?
查看>>
一例HP ADG数据恢复成功(8×73GB SCSI)
查看>>
虚拟化系列-Citrix XenServer 6.1 XenMotion与HA
查看>>
TFS创建团队项目(三)
查看>>
对发展的一点小感想
查看>>
示例化讲解RIP路由更新机制
查看>>
eclipse不能自动编译工程的解决方法
查看>>
Powershell管理系列(九)删除Exchange用户邮箱中多余的电子邮件地址
查看>>
Swt/Jface进度条
查看>>
.NET建议使用的大小写命名原则
查看>>
Git:错误:error:src refspec master does not match any
查看>>
SSIS 数据类型和类型转换
查看>>
Oracle数据库“Specified cast is农田valid”
查看>>