Asp.net MVC 之ActionResult
ActionResult 派生出以下子类:
- ViewResult
返回一个网页视图
- PartialViewResult
返回一个网页视图,但不适用布局页。
- ContentResult
返回一段字符串文本。和直接返回string字符串没有区别,只不过可以设置返回内容的格式和编码格式。例如:
public string Content()
{
return "<h1>HelloKitty</h1>"; //浏览器显示 HelloKitty
}
public ActionResult Content2()
{
//return Content("<h1>GoodbyeKitty</h1>"); //浏览器显示 GoodbyeKitty
//指定返回文本的格式与字符编码
return Content("<h1>GoodbyeKitty</h1>",
"text/html",System.Text.Encoding.UTF8);
}
- JsonResult
传入一个任意类型的对象,尽可能地将它格式化为JSON格式。
对于文件或图片类型数据会转换为乱码。
Dictionary这种键值对类型会被转换成js类,List这类会被转换成js数组
例如:
class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
public ActionResult JSON1()
{
var array = new List<Student>();
array.Add(new Student { Name = "小明", Age = 12 });
array.Add(new Student { Name = "小李", Age = 15 });
return Json(array,JsonRequestBehavior.AllowGet);
//JsonRequestBehavior用于指定是否允许GET方式访问,默认只允许POST
//运行结果:[{"Name":"小明","Age":12},{"Name":"小李","Age":15}]
}
public ActionResult JSON2()
{
//也可使用匿名内部类来保存数据
return Json(new { name = "test", age = 16, sex = "boy" }, JsonRequestBehavior.AllowGet);
//运行结果:{"name":"test","age":16,"sex":"boy"}
}
- JavaScriptResult
返回一个JavaScript代码字符串。JavaScript()的效果实际上和Content()是一样的,只不过JavaScript()会自动指定返回文本的内容是application/x-javascript。例如:
public ActionResult JS()
{
return JavaScript("alert('" + DateTime.Now.ToLongTimeString() + "')");
}
public ActionResult JS2()
{
return Content("alert('" + DateTime.Now.ToLongTimeString() + "')", "application/x-javascript");
//这样写效果和上面完全是一样的
}
/*
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="http://localhost:5695/home/js2"></script>
<!--可以直接在script标签中填写action的地址-->
</head>
<body></body>
</html>
*/
- FileResult
返回一个文件,可以通过文件名、文件流、二进制Byte[ ]的形式发送文件,需要指定文件类型。例如:
public ActionResult FILE1()
{
System.IO.Stream fs = System.IO.File.OpenRead(@"test.png");
return File(fs, @"image/png"); //通过流的方法
}
public ActionResult FILE2()
{
return File(@"test.png", @"image/png"); //通过文件名的方式
}
public ActionResult FILE3()
{
System.Drawing.Bitmap b = new System.Drawing.Bitmap(100, 100); //创建一张空白图片
System.IO.MemoryStream ms = new System.IO.MemoryStream();
b.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] bytes = ms.GetBuffer();
return File(bytes, @"image/bmp"); //通过二进制数据的方式
}
/*
//现在可以直接将地址赋值给img标签来进行显示了
<img src="http://localhost:5695/home/file1" alt="">
*/
- EmptyResult
返回null,如果Action返回null,则会自动将null转换为EmptyResult
- RedirectResult
使客户端浏览器跳转到指定的URL
- RedirectToRouteResult
RedirectToAction()方法将客户端浏览器跳转的指定的Action
RedirectToRoute()方法将客户端浏览器跳转到指定的URL,取决于路由
附录:MIME
MIME (Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。
是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
常见文件格式
|
文件类型 |
格式编码 |
|
超文本标记语言文件(.html) |
text/html |
|
XML文档(.xml) |
Text/xml |
|
普通文本(.txt) |
Text/plain |
|
PDF文档(.pdf) |
application/pdf |
|
Word文档(.docx) |
application/msword |
|
PNG图像(.png) |
image/png |
|
GIF图形(.gif) |
image/gif |
|
JPEG图形(.jpeg , .jpg) |
image/jpeg |
Asp.net MVC 之ActionResult的更多相关文章
- [转载]深入理解ASP.NET MVC之ActionResult
Action全局观 在上一篇最后,我们进行到了Action调用的“门口”: 1 if (!ActionInvoker.InvokeAction(ControllerContext, actionNam ...
- Asp.net MVC 之 ActionResult
Action运行完后,回传的值通过ActionResult 类别或者其衍生的类别操作.ActionResult是一个抽象类,因此,Asp.net MVC 本身就实作了许多不同类型的ActionResu ...
- asp.net mvc之ActionResult
Web服务器接收到一个客户端请求以后,会对请求予以相应,而这个响应是通过Response来控制的, 但是在asp.net mvc 里,这部分的工作是由ActionResult来完成的, ActionR ...
- ASP.NET MVC自定义ActionResult实现文件压缩
有时候需要将单个或多个文件进行压缩打包后在进行下载,这里我自定义了一个ActionResult,方便进行文件下载 using System; using System.Collections; usi ...
- ASP.NET MVC 拓展ActionResult实现Html To Pdf 导出
之前实现了html直接转换为word文档的功能,那么是否也同样可以直接转换为pdf文档呢,网上搜了下html to pdf 的开源插件有很多 如:wkhtmltopdf,pdfsharp,itexts ...
- ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别
如果确认你返回的是一个视图(view),你可以直接返回类型为ViewResult. 如果你并不是很清楚,或者你根本不想去理解这些东西,你可以直接返回ActionResult
- Asp.net MVC 控制器ActionResult的例子
ActionResult 父类型 ViewResult View() 多重载应用 PartialViewResult PartialView() 部分试图 New EmptyResult() 空 如 ...
- ASP.NET MVC中ActionResult的不同返回方式
1.返回视图 return View();//返回方法名对应的视图 return View("aaa");//返回名称为aaa的视图 2.返回文本内容 return Content ...
- 【转】ASP.NET MVC学习笔记-Controller的ActionResult
1. 返回ViewResult public ActionResult Index() { ViewData["Message"] = "Welcome ...
随机推荐
- TypeError: BlobBuilder is not a constructor
var BlobBuilder = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder || window. ...
- js之select三级联动
效果图如下: 代码逻辑梳理:层层递进,比如选择了课程后,将对应的课程id保存,然后点击选择章时自动触发对应的时间,根据这个课程ID获取其下面的章信息.其它的如节等,同理. 代码说明:如下代码不规范,可 ...
- 【Beta】Scrum meeting 5
目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 照片 commit记录截图 小程序前端仓库 后端代码仓库 技术博客 写在前面 例会时间:5.9 22:30-23:30 例会地 ...
- [BUAA软工]提问回顾与个人总结
提问回顾与个人总结 项目 内容 所属课程 2019春季计算机学院软件工程(任健) 所属作业 提问回顾与问题总结 课程目标 理解软件工程的作用和重要性,提升工程能力,团队协作能力 作业目标 回顾软工课程 ...
- LiteIDE 设置默认编译输出位置
go build命令默认输出路径是当前工作路径,这个显得比较乱,我习惯于把输出文件放置在项目的build目录下,这样方便查找,已经同步备份的时候排除不必要的文件. go build命令可以指定-o 输 ...
- shell 备份mysql
shell脚本备份mysql,放在crontab中,可以作为每日测试用数据库备份 #!/bin/bash string_time=`date +%Y%m%d%H%M`; file_path=`date ...
- Tesserac初探
安装Tesseract Windows 系统 下载可执行安装文件https://code.google.com/p/tesseract-ocr/downloads/list安装.或者https://d ...
- ECharts饼图自定义
[本文出自天外归云的博客园] 实现: 1.饼块可点击(点击饼块跳转到百度) 2.饼块自定义标签显示(显示个数.占比) 3.自定义标签连接线样式(虚线) 前端php代码如下: <!DOCTYPE ...
- MySQL 5.7 虚拟列 (virtual columns)(转)
原文地址:https://www.cnblogs.com/raichen/p/5227449.html 参考资料: Generated Columns in MySQL 5.7.5 MySQL 5.7 ...
- python初级(302) 6 对象(五)
一.复习 1.什么是多态 2.什么是继承 二.继承:向父母学习 在面向对象编程中,类可以从其他类继承属性和方法.这样就有了类的整个家族,这个家族中的每个类共享相同的属性和方法.这样一来,每次向家族增加 ...