MVC中的Action方法的返回值一般有以下几种:

类型

s说明

EmptyResult

不进行任何操作

ContentResult

将指定内容作为文本输出

JsonResult

输出JSON字符串

JavaScriptResult

输出JavaScript

RedirecResult、RedirectToRouteResult

重定向到给定的URL中

FileResult(抽象类)

FilePathResult、FileContentResult、FileStreamResult

文件输出

ViewResultBase(抽象类)

ViewResult、PartialViewResult

调用视图输出

Controller控制器代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO; namespace MvcActionReturnType.Controllers
{
public class HomeController : Controller
{
/// <summary>
/// 1、返回一个ViewResult对象
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
return View();
} /// <summary>
/// 2、返回一个json格式的数据
/// </summary>
/// <returns></returns>
public ActionResult Json()
{
var book = new { BookId = , BookName = "MVC框架" };
return Json(book, JsonRequestBehavior.AllowGet);
} /// <summary>
/// 3、返回JavaScript
/// </summary>
/// <returns></returns>
public ActionResult JavaScript()
{
string js = "<script>alert('Welcome to ASP.NET MVC')</script>";
return JavaScript(js);
} /// <summary>
/// 4、返回FilePath
/// </summary>
/// <returns></returns>
public ActionResult FilePath()
{
//return File("~/Content/校长 - 带你去旅行.mp3", "audio/mp3");
return new FilePathResult("~/Content/校长 - 带你去旅行.mp3", "audio/mp3");
} /// <summary>
/// 5、返回FileContent
/// </summary>
/// <returns></returns>
public ActionResult FileContent()
{
string content = "Welcome To ASP.NET MVC";
byte[] contents = System.Text.Encoding.UTF8.GetBytes(content);
return File(contents, "text/plain");
} /// <summary>
/// 6、返回FileStream
/// </summary>
/// <returns></returns>
public ActionResult FileStream()
{
string content = "Welcome To ASP.NET MVC";
byte[] contents = System.Text.Encoding.UTF8.GetBytes(content);
FileStream fs = new FileStream(Server.MapPath("~/Content/2 开发环境下载安装说明.doc"), FileMode.Open);
return File(fs, "application/msword");
} /// <summary>
/// 7、返回 ContentResult
/// </summary>
/// <returns></returns>
public ActionResult ContentResult()
{
string content = "<h1>Welcome To ASP.NET MVC</h1>";
return Content(content);
} public ActionResult About()
{
ViewBag.Message = "Your application description page."; return View();
} public ActionResult Contact()
{
ViewBag.Message = "Your contact page."; return View();
}
}
}

视图代码如下:

@{
ViewBag.Title = "Home Page";
} <div>
1.输出json
<p>
@Html.ActionLink("生成Json", "Json");
</p> 2.输出js
<script src=@Url.RouteUrl(new { action="JavaScript"}) type="text/javascript"> </script>
<p>
@(Url.RouteUrl(new { controller = "home", action = "JavaScript" }));
@Html.ActionLink("生成JavaScript", "JavaScript");
</p> 3.播放音乐
<p>
@Html.ActionLink("播放MP3", "FilePath");
</p>
4.查看文本文件
<p>
@Html.ActionLink("查看文件内容", "FileContent");
</p>
5.链接文件流
<p>
@Html.ActionLink("访问Doc", "FileStream");
</p>
6.输出文本
<p>
@Html.ActionLink("输出文本", "ContentResult");
</p>
</div>

请看下面的两段代码:

public int Sum(int num1, int num2)
{
int sum = num1 + num2;
return sum;
} public ActionResult Sum2(int num1, int num2)
{
int sum = num1 + num2;
return Content(sum.ToString());
}

有些时候,我们希望把Action定义成一种更自然的形式,比如我们希望Action Sum2做一个求和的计算,传入的参数是整数,计算的结果也是整数,那么可不可以返回一个整数的结果呢?

如上面的两个方法所示,两个方法的效果是等价的,也就是会把整形的数据转换成字符串类型,然后封装成ContentResult类型,这个过程是MVC框架自动帮助我们完成的。

返回的值

说明

null

EmptyResult

void

EmptyResult

对象(ActionResult之外的类型)

ContentResult

在Action方法中,任何类型的返回值都是可以的,如果他不是ActionResult类型,会封装成ActionResult类型的对象,如上表所示。

MVC教程五:Action方法的返回类型的更多相关文章

  1. Web API 方法的返回类型、格式器、过滤器

    一.Action方法的返回类型 a) 操作方法的返回类型有四种:void.简单或复杂类型.HttpResponseMessage类型.IHttpActionResult类型. b) 如果返回类型为vo ...

  2. Effective Java 第三版——47. 优先使用Collection而不是Stream来作为方法的返回类型

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  3. ASP.NET MVC教程五:ASP.NET MVC中的路由

    一.概述 在ASP.NET MVC架构中,控制器在3大核心构件中处于中心地位,通过控制器支配模型和视图,然而从浏览器发出的请求到控制器还需要路由的协助,路由将特定的请求和控制器的动作对应起来. 在AS ...

  4. action方法不返回

    当被请求的action方法中还有资源没有释放时,请求方法是不会返回的,会一直停留在方法中,即使是最后一行,因为请求方法一旦返回,那方法中的资源,引用就没有位置住了,所以所请求的方法会一直不返回,直到方 ...

  5. Struct2_使用Ajax调用Action方法并返回值

    一.Login.jsp 1.<head>引入jquery: <script type="text/javascript" src="http://aja ...

  6. MVC – 6.控制器 Action方法参数与返回值

      6.1 Controller接收浏览器数据   a.获取Get数据 : a1:获取路由url中配置好的制定参数: 如配置好的路由: 浏览器请求路径为: /User/Modify/1 ,MVC框架获 ...

  7. MVC – 6.控制器 Action方法参数与返回值

    6.1 Controller接收浏览器数据 a.获取Get数据 : a1:获取路由url中配置好的制定参数: 如配置好的路由: 浏览器请求路径为: /User/Modify/1 ,MVC框架获取请求后 ...

  8. Android JNI之调用JAVA方法的返回类型签名

    从http://blog.csdn.net/lonelyroamer/article/details/7932787截取的 如何签名: 下面看看Sign签名如何写,来表示要取得的属性或方法的类型. 1 ...

  9. 【MVC 过滤器的应用】ASP.NET MVC 如何统计 Action 方法的执行时间

    代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; u ...

随机推荐

  1. Django的AutoField字段

    [Django是一个机智的框架] 默认情况下Djang会为ORM中定义的每一张表加上一个自增ID列,并且用这个列来做主键:出于一个MySQL-DBA的工作经历我觉得 Djanog还真是机智:这样么说主 ...

  2. java Web的MVC最基础暂定分层包

    数据封装 entity, 数据访问对象  Dao, 业务逻辑 servlet, ----- 网页显示层 jsp 加上 jsp附带技术 el表达式和jstl ,jsp 标记库语言, el表达式 ${us ...

  3. The superclass "javax.servlet.http.HttpServlet" was not found 问题解决

    项目中报" The superclass "javax.servlet.http.HttpServlet" was not found "这个错误,是因为缺少t ...

  4. 【R】R语言常用函数

    R语言常用函数 基本 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量character:字符型向量 list:列表 data.frame:数据框c:连接为向量或 ...

  5. 分布式系统的那些事儿(四) - MQ时代的通信

    之前在讲RPC通信的各种好处,特别好用,但是RPC并不是万能的,也并不是适用于各种场景的,因为他是同步的:现如今很多场景下的调用都是异步的,系统A调用B后,并不需要知道B的结果,而且对B的结果无所谓, ...

  6. 【iOS XMPP】使用XMPPFramewok(二):用户登录

    转自:http://www.cnblogs.com/dyingbleed/archive/2013/05/10/3069397.html 用户登录 准备工作 比较知名的开源XMPP服务器:一个是Ope ...

  7. Linux下用netstat查看网络状态、端口状态

    在linux一般使用netstat 来查看系统端口使用情况步. netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的 netstat命 ...

  8. [Windows Azure] Getting Started with Windows Azure SQL Data Sync

    Getting Started with Windows Azure SQL Data Sync In this tutorial, you learn the fundamentals of Win ...

  9. [Windows Azure] How to Configure Cloud Services

    How to Configure Cloud Services To use this feature and other new Windows Azure capabilities, sign u ...

  10. vim学习日志(8):linux查看和修改文件编码

    查看文件的编码 方法一: 1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.注:如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可 ...