关于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返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致 ...
随机推荐
- python模块之bsddb: bdb高性能嵌入式数据库 1.基础知识
转自:http://blog.csdn.net/zhaoweikid/article/details/1665741 bsddb模块是用来操作bdb的模块,bdb是著名的Berkeley DB,它的性 ...
- org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.
No action config found for the specified url url路径下找不到action,原因是stuts-config.xml文件配置错误. demo的项目文件如下: ...
- 一般处理程序中使用Session出现未将对象引用设置到对象的实例
遇到问题:未将对象引用设置到对象的实例 那就在你的一般处理程序中加入红色背景的代码吧 using System; using System.Collections.Generic; using Sys ...
- 桌面环境与桌面搜索Desktop Search tools
最近一段时间工作重心都将放在Linux下Desktop search(桌面搜索)框架的研发上.因此对desktop search进行了初步的调研.本文将从下面三个方面展开: Linux桌面环境(Des ...
- MySQL高可用基础之keepalived+双主复制【转】
环境:MySQL-VIP:192.168.1.3MySQL-master1:192.168.1.1MySQL-master2:192.168.1.2 OS版本:CentOS release 6.4 ( ...
- $.each 和$(selector).each()的差别
Home » jQuery » $.each() $.each() Posted on 2012 年 3 月 15 日 in jQuery, jQuery函数 | by Jason | 译自官方手冊: ...
- Java基础知识强化72:正则表达式之判断功能(手机号码判断 和 校验邮箱)
1. 判断功能: 使用了String类的matches方法,如下: public boolean matches(String regex): 2. 判断手机号码的案例: package cn.it ...
- C语言二叉树的建立与遍历
二叉树的建立和遍历都要用到递归,先暂时保存一下代码,其中主要是理解递归的思想,其它的就都好理解了.这里是三种遍历方式,其实理解一种,其它的几个就都理解了,就是打印出来的顺序不一样而已.建立和遍历的方式 ...
- 线段树---HDU1166敌兵布阵
这个是线段树中最入门的题目,但是由于不了解线段树的概念,当然更不知道怎么样,所以觉得挺费劲,整了一会发现还是基本的思想,就是还是将一个线段继续分割,一直分割到不能分割,这道题目是知道多少个军营,也就是 ...
- react.js 你应知道的9件事
React.js 初学者应该知道的 9 件事 本文假定你已经有了一下基本的概念.如果你不熟悉 component.props 或者 state 这些名词,你最好先去阅读下官方起步和手册.下面的代码 ...