关于Action返回结果类型的事儿(下)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; using System.IO; namespace MVC.Controllers { /// <summary> /// Controller 类必须以字符串 "Controller" 做类名称的结尾,字符串 Controller 之前的字符串为 Controller 的名称,类中的方法名为 Action 的名称 /// </summary> public class ControllerDemoController : Controller { // [NonAction] - 当前方法仅为普通方法,不解析为 Action // [AcceptVerbs(HttpVerbs.Post)] - 声明 Action 所对应的 http 方法 /// <summary> /// Action 可以没有返回值 /// </summary> public void Void() { Response.Write(string.Format("<span style='color: red'>{0}</span>", "void")); } /// <summary> /// 如果 Action 要有返回值的话,其类型必须是 ActionResult /// EmptyResult - 空结果 /// </summary> public ActionResult EmptyResult() { Response.Write(string.Format("<span style='color: red'>{0}</span>", "EmptyResult")); return new EmptyResult(); } /// <summary> /// Controller.Redirect() - 转向一个指定的 url 地址 /// 返回类型为 RedirectResult /// </summary> public ActionResult RedirectResult() { return base.Redirect("~/ControllerDemo/ContentResult"); } /// <summary> /// Controller.RedirectToAction() - 转向到指定的 Action /// 返回类型为 RedirectToRouteResult /// </summary> public ActionResult RedirectToRouteResult() { return base.RedirectToAction("ContentResult"); } /// <summary> /// Controller.Json() - 将指定的对象以 JSON 格式输出出来 /// 返回类型为 JsonResult /// </summary> public ActionResult JsonResult(string name) { System.Threading.Thread.Sleep(1000); var jsonObj = new { Name = name, Age = new Random().Next(20, 31) }; return base.Json(jsonObj); } /// <summary> /// Controller.JavaScript() - 输出一段指定的 JavaScript 脚本 /// 返回类型为 JavaScriptResult /// </summary> public ActionResult JavaScriptResult() { return base.JavaScript("alert('JavaScriptResult')"); } /// <summary> /// Controller.Content() - 输出一段指定的内容 /// 返回类型为 ContentResult /// </summary> public ActionResult ContentResult() { string contentString = string.Format("<span style='color: red'>{0}</span>", "ContentResult"); return base.Content(contentString); } /// <summary> /// Controller.File() - 输出一个文件(字节数组) /// 返回类型为 FileContentResult /// </summary> public ActionResult FileContentResult() { FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open); int length = (int)fs.Length; byte[] buffer = new byte[length]; fs.Read(buffer, 0, length); fs.Close(); return base.File(buffer, "image/gif"); } // <summary> /// Controller.File() - 输出一个文件(文件地址) /// 返回类型为 FileContentResult /// </summary> public ActionResult FilePathResult() { var path = Request.PhysicalApplicationPath + "Content/loading.gif"; return base.File(path, "image/gif"); } // <summary> /// Controller.File() - 输出一个文件(文件流) /// 返回类型为 FileContentResult /// </summary> public ActionResult FileStreamResult() { FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open); return base.File(fs, @"image/gif"); } /// <summary> /// HttpUnauthorizedResult - 响应给客户端错误代码 401(未经授权浏览状态),如果程序启用了 Forms 验证,并且客户端没有任何身份票据,则会跳转到指定的登录页 /// </summary> public ActionResult HttpUnauthorizedResult() { return new HttpUnauthorizedResult(); } /// <summary> /// Controller.PartialView() - 寻找 View ,即 .ascx 文件 /// 返回类型为 PartialViewResult /// </summary> public ActionResult PartialViewResult() { return base.PartialView(); } /// <summary> /// Controller.View() - 寻找 View ,即 .aspx 文件 /// 返回类型为 ViewResult /// </summary> public ActionResult ViewResult() { // 如果没有指定 View 名称,则寻找与 Action 名称相同的 View return base.View(); } /// <summary> /// 用于演示处理 JSON 的 /// </summary> public ActionResult JsonDemo() { return View(); } /// <summary> /// 用于演示上传文件的 /// </summary> public ActionResult UploadDemo() { return View(); } /// <summary> /// 用于演示 Get 方式调用 Action /// id 是根据路由过来的;param1和param2是根据参数过来的 /// </summary> [AcceptVerbs(HttpVerbs.Get)] public ActionResult GetDemo(int id, string param1, string param2) { ViewData["ID"] = id; ViewData["Param1"] = param1; ViewData["Param2"] = param2; return View(); } /// <summary> /// 用于演示 Post 方式调用 Action /// </summary> /// <remarks> /// 可以为参数添加声明,如:[Bind(Include = "xxx")] - 只绑定指定的属性(参数),多个用逗号隔开 /// [Bind(Exclude = "xxx")] - 不绑定指定的属性(参数),多个用逗号隔开 /// [Bind] 声明同样可以作用于 class 上 /// </remarks> [AcceptVerbs(HttpVerbs.Post)] public ActionResult PostDemo(FormCollection fc) { ViewData["Param1"] = fc["param1"]; ViewData["Param2"] = fc["param2"]; // 也可以用 Request.Form 方式获取 post 过来的参数 // Request.Form 内的参数也会映射到同名参数。例如,也可用如下方式获取参数 // public ActionResult PostDemo(string param1, string param2) return View("GetDemo"); } /// <summary> /// 处理上传文件的 Action /// </summary> /// <param name="file1">与传过来的 file 类型的 input 的 name 相对应</param> [AcceptVerbs(HttpVerbs.Post)] public ActionResult UploadFile(HttpPostedFileBase file1) { // Request.Files - 获取需要上传的文件。当然,其也会自动映射到同名参数 // HttpPostedFileBase hpfb = Request.Files[0] as HttpPostedFileBase; string targetPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Upload", Path.GetFileName(file1.FileName)); file1.SaveAs(targetPath); return View("UploadDemo"); } } }关于Action返回结果类型的事儿(下)的更多相关文章
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
原文:ASP.NET MVC – 关于Action返回结果类型的事儿(上) 本文转自:博客园-文超的技术博客 一. ASP.NET MVC 1.0 Result 几何? Action的 ...
- 【MVC】关于Action返回结果类型的事儿(上)
一. ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1. ...
- 【MVC】关于Action返回结果类型的事儿(下)
代码
- ASP.NET MVC Action返回结果类型【转】
ASP.NET MVC 目前一共提供了以下几种Action返回结果类型: 1.ActionResult(base) 2.ContentResult 3.EmptyResult 4.HttpUnauth ...
- Controller 中Action 返回值类型 及其 页面跳转的用法
•Controller 中Action 返回值类型 View – 返回 ViewResult,相当于返回一个View 页面. -------------------------------- ...
- MVC Action 返回类型[转]
一. ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回 ...
- MVC方法的返回值类型
MVC方法返回值类型 ModelAndView返回值类型: 1.当返回为null时,页面不跳转. 2.当返回值没有指定视图名时,默认使用请求名作为视图名进行跳转. 3.当返回值指定了视图名,程序会按照 ...
- Action的返回值类型总结
Action的返回值 MVC 中的 ActionResult是其他所有Action返回类型的基类,下面是我总结的返回类型,以相应的帮助方法: 下面是这些方法使用的更详细的例子 一.返回View ...
- asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比
通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致 ...
随机推荐
- java中Object相关的几个方法
protected Object clone()创建并返回此对象的一个副本. String toString()返回该对象的字符串表示. boolean equals(Object obj)指 ...
- Flask 中的 SQLAlchemy 使用教程
Flask 是一个 python web micro framework.所谓微框架,主要是 flask 简洁与轻巧,自定义程度高.相比 django 更加轻量级. 之前一直折腾 django,得益于 ...
- jquery 随机数
var jschars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', ...
- js获取当前页面的url中id
function UrlSearch() { var name, value; var str = location.href; //获取到整个地址 var num = str.indexOf(&qu ...
- 标C编程笔记day06 动态分配内存、函数指针、可变长度參数
动态分配内存:头文件 stdlib.h malloc:分配内存 calloc:分配内存,并清零 realloc:调整已分配的内存块大小 演示样例: in ...
- 关于js跨域
get方式: 称为jsonp,就是js的跨域通信方式,因为知道有些标签可以跨域获取内容,例如img,script,link...,jsonp就是把动态创建一个script标签,然后配置src属性,后台 ...
- JAVA虚拟机与内存
资料整理自网络(侵删) JVM内存 组成 JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) 栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和 ...
- Topcoder SRM 639 (Div.2)
A.ElectronicPetEasy [题意]一个数st1开始,每次加p1,一共加t1次,另外一个数st2开始,每次加p2,一共加t2次,输入的数均小于1000,问这两个数有没有可能相等,有可能输出 ...
- UVA 11770 Lighting Away
RunID User Problem Result Memory Time Language Length Submit Time 2482977 zhyfzy J Accepted 0 KB 138 ...
- bootsrtap (-)
1.text-muted:提示,使用浅灰色(#999).text-primary:主要,使用蓝色(#428bca).text-success:成功,使用浅绿色(#3c763d).text-info:通 ...