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. Mysql show processlist 排查问题

    一.命令概述: mysql show full processlist 用来查看当前线程处理情况,具体信息请参考官网:https://dev.mysql.com/doc/refman/5.7/en/s ...

  2. Zookeeper服务器配置项详解

    文章转自: http://www.bug315.com/article/159.htm http://www.bug315.com/article/160.htm Zookeeper是通过一个***. ...

  3. PhotoShop CS6学习笔记

    学习目的是能够处理正常的数码照片,稍作修饰即可.高级功能不做要求.但笔记还是要做的,以后翻翻可以加深记忆. 对于平面设计来说,软件是基础,创意是灵魂. 1. 位图与矢量图 位图,又称为点阵图像或绘制图 ...

  4. 对于android浏览器的一些看法

    首先我先声明我不是一个浏览器开发者,只是近段时间看了一些关于浏览器的东西,才有一些看法. 在几年前开发手机的web 页面,都经常因为JS插件不兼容android WebView内核,导致开发浪费大量时 ...

  5. Atitit js es5 es6新特性 attilax总结

    Atitit js es5 es6新特性 attilax总结 1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 ...

  6. Python运维自动化开发之Fabric模块

    本章讲解fabric模块,与上一章的paramiko模块功能类似,fabric是在paramiko基础上又做了一层封装,操作起来更方便.主要用于多台服务器批量执行任务. 非内置Python模块,需要手 ...

  7. HTML5学习笔记(二十三):DOM应用之动态加载脚本

    同步加载和执行JS的情况 在HTML页面的</body>表情之前添加的所有<script>标签,无论是直接嵌入JS代码还是引入外部js代码都是同步执行的,这里的同步执行指的是在 ...

  8. 每日英语:Nelson Mandela Dies at 95

    Nelson Mandela, who rose from militant antiapartheid activist to become the unifying president of a ...

  9. linux命令(47):Linux下对文件进行按行排序,去除重复行

    Linux下对文件进行按行排序:sort 与 uniq 命令简介 Linux | May 24, 2015 | linux sort 命令可针对文本文件的内容,以行为单位进行排序.其基本语法格式为: ...

  10. 【Android】Sensor框架Framework层解读

    Sensor整体架构 整体架构说明 黄色部分表示硬件,它要挂在I2C总线上 红色部分表示驱动,驱动注册到Kernel的Input Subsystem上,然后通过Event Device把Sensor数 ...