本文转自:http://www.cnblogs.com/xielong/p/5940535.html
一、定义
MVC中ActionResult是Action的返回结果。ActionResult 有多个派生类,每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回字符串等。ActionResult是一个抽象类,它定义了唯一的ExecuteResult方法,参数为一个ControllerContext,下面为您介绍MVC中的ActionResult 的用法
二、什么是ActionResult
ActionResult是控制器方法执行后返回的结果类型,控制器方法可以返回一个直接或间接从ActionResult抽象类继承的类型,如果返回的 是非ActionResult类型,控制器将会将结果转换为一个ContentResult类型。默认的ControllerActionInvoker 调用ActionResult.ExecuteResult方法生成应答结果。
三、常见的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错误信息
四、ActionResult子类之间的关系表
aaarticlea/png;base64,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" alt="" width="577" height="558" />
五、ActionResult(12种)的简单应用
源码:
using StudyMVC4.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Mvc; namespace StudyMVC4.Controllers
{
public class HomeController : Controller
{ 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, , 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(, "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();
}
}
}
PS:源码及文档下载地址:http://pan.baidu.com/s/1boRRUGZ
[转]MVC中几种常用ActionResult的更多相关文章
-
MVC中几种常用ActionResult
一.定义 MVC中ActionResult是Action的返回结果.ActionResult 有多个派生类,每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回字符串等 ...
-
MVC中几种常用的ActionResult
一.定义 MVC中ActionResult是Action的返回结果.ActionResult 有多个派生类,每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回字符串等 ...
-
asp.net mvc 中 一种简单的 URL 重写
asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...
-
Java中几种常用数据类型之间转换的方法
Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...
-
DotNet中几种常用的加密算法
在.NET项目中,我们较多的使用到加密这个操作.因为在现代的项目中,对信息安全的要求越来越高,那么多信息的加密就变得至关重要.现在提供几种常用的加密/解密算法. 1.用于文本和Base64编码文本的互 ...
-
【Android 界面效果28】Android应用中五种常用的menu
Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...
-
C#中四种常用集合的运用(非常重要)
C#中4个常用的集合 1.ArrayList ArrayList类似于数组,有人也称它为数组列表.ArrayList可以动态维护,而数组的容量是固定的. 它的索引会根据程序的扩展而重新进行分配和调整. ...
-
Android中五种常用的menu
Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...
-
java 中几种常用数据结构
Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.几个常用类的区别 1.A ...
随机推荐
-
C#中的多线程 - 基础知识
原文:http://www.albahari.com/threading/ 文章来源:http://blog.gkarch.com/threading/part1.html 1简介及概念 C# 支持通 ...
-
wcf wpf
转 http://blog.csdn.net/thunder09/article/details/5792157 WPF就是所谓下一代Windows界面层技术,我觉得还有满有前途的.不过Vista发布 ...
-
Django框架 连接Oracle -ServerName方式报错
连接前: 修改后:
-
Presto 性能优化点
1.指定需要返回的字段 [GOOD]: SELECT time,user,host FROM tbl[BAD]: SELECT * FROM tbl 2.合理设置分区字段 当过滤条件作用在分区字段上面 ...
-
poj3669 Meteor Shower(预处理+bfs)
https://vjudge.net/problem/POJ-3669 先给地图a[][]预处理每个位置被砸的最小时间.然后再bfs. 纯bfs,还被cin卡了下时间.. #include<io ...
-
asp.net mvc 实战化项目之三板斧
laravel实战化项目之三板斧 spring mvc 实战化项目之三板斧 asp.net mvc 实战化项目之三板斧 接上文希望从一张表(tb_role_info 用户角色表)的CRUD展开asp. ...
-
Bootstrap 分页、标签、徽章、超大屏幕、页面标题
分页(pagination), 是一种无序列表 1.默认的分页(.pagination) 代码示例: <ul class="pagination"> <li> ...
-
记账本微信小程序开发一
第一,在微信公众平台注册小程序账号并完善相关信息 第二,注册一个微信公众号,找到微信web开发工具并下载适合自己电脑的工具 第三,安装 第四,根据网上教程简单了解了开发工具的使用和布局
-
64位的notepad++没有插件管理
下载的64位的notepad++没有插件管理:需要自己下载这个插件: - plugin manager的下载地址为:https://github.com/bruderstein/nppPluginMa ...
-
java报表开发之报表总述
转自:https://blog.csdn.net/u011659172/article/details/40504271?utm_source=blogxgwz6