关于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返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致 ...
随机推荐
- jquery animate
$(".logo").animate( { opacity: .25, //将不透明度逐渐变成.25 height: 0 //高度逐渐变成0 }, { duration: 1000 ...
- Android ExpandableListView BaseExpandableListAdapter (类似QQ分组列表)
分组列表视图(ExpandableListView) 和ListView不同的是它是一个两级的滚动列表视图,每一个组可以展开,显示一些子项,类似于QQ列表,这些项目来至于ExpandableListA ...
- Python标准库:内置函数bytearray([source[, encoding[, errors]]])
返回一个新字节数组.这个数组里的元素是可变的.而且每一个元素的值范围: 0 <= x < 256.能够通过"字节与字节数组操作"章节来查看相关字节数组的内容.以下说明一 ...
- spring mvc事务注解
@Transactional(noRollbackFor=RuntimeException.class)方法事务说明@Transactional(RollbackFor=Exception.class ...
- Android 从清单配置文件元数据中获取值
最近在上班工作当中,也尝到了一些新的知识,现总结如下(1)从AndroidManifest.xml配置文件中获取meta数据 // 从Manifest.xml配置文件中获取数据 public stat ...
- 使用exp&imp工具进行数据库备份及恢复
使用exp&imp工具进行数据库备份及恢复1.exp/imp使用方法介绍exp/imp为一种数据库备份恢复工具,也可以作为不同数据库之间传递数据的工具,两个数据库所在的操作系统可以不同.exp ...
- nyoj 44
//nyoj 44 //和上面一题一样,求子串和,但是代码非常简洁..... 时间复杂度为n #include <iostream> using namespace std; int ma ...
- smarty半小时快速上手教程(转)
来源于:http://www.chinaz.com/program/2010/0224/107006.shtml 一:smarty的程序设计部分: 在smarty的模板设计部分我简单的把smarty在 ...
- share js 分享代码
(function(){ var $doc = $(document); var shareHandlers = { 'twitter': function(prop,shareUrl){ var D ...
- ORACLE SQL单行函数(三)【weber出品必属精品】
16.L:代表本地货币符,这个和区域有关.这个时候我们想来显示一下人民币的符号:¥ $ vi .bash_profile ---写入如下内容: export NLS_LANG='SIMPLIFIED ...