常见的 ActionResult
1,ViewResult
表示一个视图结果, 它根据视图模板产生应答内容. 对应得 Controller 方法为 View.
2,PartialViewResult
表示一个部分视图结果, 与 ViewResult 本质上一致, 只是部分视图不支持母版, 对应于 ASP.NET,ViewResult 相当于一个 Page, 而 PartialViewResult 则相当于一个 UserControl. 它对应得 Controller 方法的 PartialView.
3,RedirectResult
表示一个连接跳转, 相当于 ASP.NET 中的 Response.Redirect 方法, 对应得 Controller 方法为 Redirect.
4,RedirectToRouteResult
同样表示一个跳转, MVC 会根据我们指定的路由名称或路由信息 (RouteValueDictionary) 来生成 Url 地址, 然后调用 Response.Redirect 跳转. 对应的 Controller 方法为 RedirectToAction 和 RedirectToRoute.
5,ContentResult
返回简单的纯文本内容, 可通过 ContentType 属性指定应答文档类型, 通过 ContentEncoding 属性指定应答文档的字符编码. 可通过 Controller 类中的 Content 方法便捷地返回 ContentResult 对象. 如果控制器方法返回非 ActionResult 对象, MVc 将简单地以返回对象的 toString()内容为基础产生一个 ContentResult 对象.
6,EmptyResult
返回一个空的结果, 如果控制器方法返回一个 null ,MVC 将其转换成 EmptyResult 对象.
7,JavaScriptResult
本质上是一个文本内容, 只是将 Response.ContentType 设置为 application/x-JavaScript, 此结果应该和 MicrosoftMvcAjax.JS 脚本配合使用, 客户端接收到 Ajax 应答后, 将判断 Response.ContentType 的值, 如果是 application/x-JavaScript, 则直接 eval 执行返回的应答内容, 此结果类型对应得 Controller 方法为 JavaScript.
8,JsonResult
表示一个 JSON 结果. MVC 将 Response.ContentType 设置为 application/JSON, 并通过 JavaScriptSerializer 类指定对象序列化为 JSON 表示方式. 需要注意, 默认情况下, Mvc 不允许 GET 请求返回 JSON 结果, 要解除此限制, 在生成 JsonResult 对象时, 将其 JsonRequestBehavior 属性设置为 JsonRequestBehavior.AllowGet, 此结果对应 Controller 方法的 JSON.
9,FileResult(FilePathResult,FileContentResult,FileStreamResult)
这三个类继承于 FileResult, 表示一个文件内容, 三者区别在于, FilePath 通过路径传送文件到客户端, FileContent 通过二进制数据的方式, 而 FileStream 是通过 Stream(流)的方式来传送. Controller 为这三个文件结果类型提供了一个名为 File 的重载方法.
FilePathResult: 直接将一个文件发送给客户端
FileContentResult: 返回 byte 字节给客户端(比如图片)
FileStreamResult: 返回流
10,HttpUnauthorizedResult
表示一个未经授权访问的错误, MVC 会向客户端发送一个 401 的应答状态. 如果在 web.config 中开启了表单验证(authenication mode="Forms"), 则 401 状态会将 Url 转向指定的 loginUrl 链接.
11,HttpStatusCodeResult
返回一个服务器的错误信息
12,HttpNoFoundResult
返回一个找不到 Action 错误信息
- // MVC 中的 ActionResult 是 Action 的返回结果. ActionResult 有多个子类.
- // 并不是所有的子类都需要返回视图 View.
- // ActionResult 是一个抽象类, 他定义了唯一的 ExecuteResult 方法, 参数为一个 ControllerContext.
- // GET: Home
- public ActionResult Index()
- {
- return View();
- }
- /// <summary>
- /// ContentResult 用法(返回文本)
- /// http://localhost:30735/home/ContentResultDemo
- /// </summary>
- /// <returns > 返回文本</returns>
- public ActionResult ContentResultDemo()
- {
- string str = "ContentResultDemo!";
- return Content(str);
- }
- /// <summary>
- /// EmptyResult 的用法(返回空对象)
- /// http://localhost:30735/home/EmptyResultDemo
- /// </summary>
- /// <returns > 返回一个空对象</returns>
- public ActionResult EmptyResultDemo()
- {
- return new EmptyResult();
- }
- /// <summary>
- /// FileContentResult 的用法(返回图片)
- /// http://localhost:30735/home/FileContentResultDemo
- /// </summary>
- /// <returns > 显示一个文件内容</returns>
- public ActionResult FileContentResultDemo()
- {
- FileStream fs = new FileStream(Server.MapPath(@"/Images/001.jpg"), FileMode.Open, FileAccess.Read);
- byte[] buffer = new byte[Convert.ToInt32(fs.Length)];
- fs.Read(buffer, 0, Convert.ToInt32(fs.Length));
- string contentType = "image/jpeg";
- return File(buffer, contentType);
- }
- /// <summary>
- /// FilePathResult 的用法(返回图片)
- /// http://localhost:30735/home/FilePathResultDemo/002
- /// </summary>
- /// <param name="id">图片 id</param>
- /// <returns > 直接将返回一个文件对象</returns>
- public FilePathResult FilePathResultDemo(string id)
- {
- string path = Server.MapPath(@"/Images/" + id + ".jpg");
- // 定义内容类型(图片)
- string contentType = "image/jpeg";
- //FilePathResult 直接返回 file 对象
- return File(path, contentType);
- }
- /// <summary>
- /// FileStreamResult 的用法(返回图片)
- /// http://localhost:30735/home/FileStreamResultDemo
- /// </summary>
- /// <returns > 返回文件流(图片)</returns>
- public ActionResult FileStreamResultDemo()
- {
- FileStream fs = new FileStream(Server.MapPath(@"/Images/001.jpg"), FileMode.Open, FileAccess.Read);
- string contentType = "image/jpeg";
- return File(fs, contentType);
- }
- /// <summary>
- /// HttpUnauthorizedResult 的用法(抛出 401 错误)
- /// http://localhost:30735/home/HttpUnauthorizedResult
- /// </summary>
- /// <returns></returns>
- public ActionResult HttpUnauthorizedResultDemo()
- {
- return new HttpUnauthorizedResult();
- }
- /// <summary>
- /// HttpStatusCodeResult 的方法(返回错误状态信息)
- /// http://localhost:30735/home/HttpStatusCodeResult
- /// </summary>
- /// <returns></returns>
- public ActionResult HttpStatusCodeResultDemo()
- {
- return new HttpStatusCodeResult(500, "System Error");
- }
- /// <summary>
- /// HttpNotFoundResult 的使用方法
- /// http://localhost:30735/home/HttpNotFoundResultDemo
- /// </summary>
- /// <returns></returns>
- public ActionResult HttpNotFoundResultDemo()
- {
- return new HttpNotFoundResult("not found action");
- }
- /// <summary>
- /// JavaScriptResult 的用法(返回脚本文件)
- /// http://localhost:30735/home/JavaScriptResultDemo
- /// </summary>
- /// <returns > 返回脚本内容</returns>
- public ActionResult JavaScriptResultDemo()
- {
- return JavaScript(@"<script>alert('Test JavaScriptResultDemo!')</script>");
- }
- /// <summary>
- /// JsonResult 的用法(返回一个 JSON 对象)
- /// http://localhost:30735/home/JsonResultDemo
- /// </summary>
- /// <returns > 返回一个 JSON 对象</returns>
- public ActionResult JsonResultDemo()
- {
- var tempObj = new { Controller = "HomeController", Action = "JsonResultDemo" };
- return JSON(tempObj);
- }
- /// <summary>
- /// RedirectResult 的用法(跳转 url 地址)
- /// http://localhost:30735/home/RedirectResultDemo
- /// </summary>
- /// <returns></returns>
- public ActionResult RedirectResultDemo()
- {
- return Redirect(@"http://wwww.baidu.com");
- }
- /// <summary>
- /// RedirectToRouteResult 的用法(跳转的 action 名称)
- /// http://localhost:30735/home/RedirectToRouteResultDemo
- /// </summary>
- /// <returns></returns>
- public ActionResult RedirectToRouteResultDemo()
- {
- return RedirectToAction(@"FileStreamResultDemo");
- }
- /// <summary>
- /// PartialViewResult 的用法(返回部分视图)
- /// http://localhost:30735/home/PartialViewResultDemo
- /// </summary>
- /// <returns></returns>
- public PartialViewResult PartialViewResultDemo()
- {
- return PartialView();
- }
- /// <summary>
- /// ViewResult 的用法(返回视图)
- /// http://localhost:30735/home/ViewResultDemo
- /// </summary>
- /// <returns></returns>
- public ActionResult ViewResultDemo()
- {
- // 如果没有传入 View 名称, 默认寻找与 Action 名称相同的 View 页面.
- return View();
- }
来源: http://www.bubuko.com/infodetail-2777564.html