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 = 1, 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类型的对象,如上表所示。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持代码网。
发表评论