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