【MVC】关于Action返回结果类型的事儿(下)

代码

1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Web.Mvc;
  6 using System.Web.Mvc.Ajax;
  7 
  8 using System.IO;
  9 
10 namespace MVC.Controllers
11 {
12     /// <summary>
13     /// Controller 类必须以字符串 "Controller" 做类名称的结尾,字符串 Controller 之前的字符串为 Controller 的名称,类中的方法名为 Action 的名称
14     /// </summary>
15     public class ControllerDemoController : Controller
16     {
17         // [NonAction] - 当前方法仅为普通方法,不解析为 Action
18         // [AcceptVerbs(HttpVerbs.Post)] - 声明 Action 所对应的 http 方法
19 
20         /// <summary>
21         /// Action 可以没有返回值
22         /// </summary>
23         public void Void()
24         {
25             Response.Write(string.Format("<span style=‘color: red‘>{0}</span>", "void"));
26         }
27 
28         /// <summary>
29         /// 如果 Action 要有返回值的话,其类型必须是 ActionResult
30         /// EmptyResult - 空结果
31         /// </summary>
32         public ActionResult EmptyResult()
33         {
34             Response.Write(string.Format("<span style=‘color: red‘>{0}</span>", "EmptyResult"));
35             return new EmptyResult();
36         }
37 
38         /// <summary>
39         /// Controller.Redirect() - 转向一个指定的 url 地址
40         /// 返回类型为 RedirectResult
41         /// </summary>
42         public ActionResult RedirectResult()
43         {
44             return base.Redirect("~/ControllerDemo/ContentResult");
45         }
46 
47         /// <summary>
48         /// Controller.RedirectToAction() - 转向到指定的 Action
49         /// 返回类型为 RedirectToRouteResult
50         /// </summary>
51         public ActionResult RedirectToRouteResult()
52         {
53             return base.RedirectToAction("ContentResult");
54         }
55 
56         /// <summary>
57         /// Controller.Json() - 将指定的对象以 JSON 格式输出出来
58         /// 返回类型为 JsonResult
59         /// </summary>
60         public ActionResult JsonResult(string name)
61         {
62             System.Threading.Thread.Sleep(1000);
63 
64             var jsonObj = new { Name = name, Age = new Random().Next(20, 31) };
65             return base.Json(jsonObj);
66         }
67 
68         /// <summary>
69         /// Controller.JavaScript() - 输出一段指定的 JavaScript 脚本
70         /// 返回类型为 JavaScriptResult
71         /// </summary>
72         public ActionResult JavaScriptResult()
73         {
74             return base.JavaScript("alert(‘JavaScriptResult‘)");
75         }
76 
77         /// <summary>
78         /// Controller.Content() - 输出一段指定的内容
79         /// 返回类型为 ContentResult
80         /// </summary>
81         public ActionResult ContentResult()
82         {
83             string contentString = string.Format("<span style=‘color: red‘>{0}</span>", "ContentResult");
84             return base.Content(contentString);
85         }
86 
87         /// <summary>
88         /// Controller.File() - 输出一个文件(字节数组)
89         /// 返回类型为 FileContentResult
90         /// </summary>
91         public ActionResult FileContentResult()
92         {
93             FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);
94             int length = (int)fs.Length;
95             byte[] buffer = new byte[length];
96             fs.Read(buffer, 0, length);
97             fs.Close();
98 
99             return base.File(buffer, "image/gif");
100         }
101 
102         // <summary>
103         /// Controller.File() - 输出一个文件(文件地址)
104         /// 返回类型为 FileContentResult
105         /// </summary>
106         public ActionResult FilePathResult()
107         {
108             var path = Request.PhysicalApplicationPath + "Content/loading.gif";
109             return base.File(path, "image/gif");
110         }
111 
112         // <summary>
113         /// Controller.File() - 输出一个文件(文件流)
114         /// 返回类型为 FileContentResult
115         /// </summary>
116         public ActionResult FileStreamResult()
117         {
118             FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);
119 
120             return base.File(fs, @"image/gif");
121         }
122 
123         /// <summary>
124         /// HttpUnauthorizedResult - 响应给客户端错误代码 401(未经授权浏览状态),如果程序启用了 Forms 验证,并且客户端没有任何身份票据,则会跳转到指定的登录页
125         /// </summary>
126         public ActionResult HttpUnauthorizedResult()
127         {
128             return new HttpUnauthorizedResult();
129         }
130 
131         /// <summary>
132         /// Controller.PartialView() - 寻找 View ,即 .ascx 文件
133         /// 返回类型为 PartialViewResult
134         /// </summary>
135         public ActionResult PartialViewResult()
136         {
137             return base.PartialView();
138         }
139 
140         /// <summary>
141         /// Controller.View() - 寻找 View ,即 .aspx 文件
142         /// 返回类型为 ViewResult
143         /// </summary>
144         public ActionResult ViewResult()
145         {
146             // 如果没有指定 View 名称,则寻找与 Action 名称相同的 View
147             return base.View();
148         }
149 
150         /// <summary>
151         /// 用于演示处理 JSON 的
152         /// </summary>
153         public ActionResult JsonDemo()
154         {
155             return View();
156         }
157 
158         /// <summary>
159         /// 用于演示上传文件的
160         /// </summary>
161         public ActionResult UploadDemo()
162         {
163             return View();
164         }
165 
166         /// <summary>
167         /// 用于演示 Get 方式调用 Action
168         /// id 是根据路由过来的;param1和param2是根据参数过来的
169         /// </summary>
170         [AcceptVerbs(HttpVerbs.Get)]
171         public ActionResult GetDemo(int id, string param1, string param2)
172         {
173             ViewData["ID"] = id;
174             ViewData["Param1"] = param1;
175             ViewData["Param2"] = param2;
176 
177             return View();
178         }
179 
180         /// <summary>
181         /// 用于演示 Post 方式调用 Action
182         /// </summary>
183         /// <remarks>
184         /// 可以为参数添加声明,如:[Bind(Include = "xxx")] - 只绑定指定的属性(参数),多个用逗号隔开
185         /// [Bind(Exclude = "xxx")] - 不绑定指定的属性(参数),多个用逗号隔开
186         /// [Bind] 声明同样可以作用于 class 上
187         /// </remarks>
188         [AcceptVerbs(HttpVerbs.Post)]
189         public ActionResult PostDemo(FormCollection fc)
190         {
191             ViewData["Param1"] = fc["param1"];
192             ViewData["Param2"] = fc["param2"];
193 
194             // 也可以用 Request.Form 方式获取 post 过来的参数
195 
196             // Request.Form 内的参数也会映射到同名参数。例如,也可用如下方式获取参数 
197             // public ActionResult PostDemo(string param1, string param2)
198 
199             return View("GetDemo");
200         }
201 
202         /// <summary>
203         /// 处理上传文件的 Action
204         /// </summary>
205         /// <param name="file1">与传过来的 file 类型的 input 的 name 相对应</param>
206         [AcceptVerbs(HttpVerbs.Post)]
207         public ActionResult UploadFile(HttpPostedFileBase file1)
208         {
209             // Request.Files - 获取需要上传的文件。当然,其也会自动映射到同名参数
210             // HttpPostedFileBase hpfb = Request.Files[0] as HttpPostedFileBase;
211 
212             string targetPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Upload", Path.GetFileName(file1.FileName));
213             file1.SaveAs(targetPath);
214 
215             return View("UploadDemo");
216         }
217     }
218 }
219

时间: 2024-10-29 19:13:41

【MVC】关于Action返回结果类型的事儿(下)的相关文章

ASP.NET MVC – 关于Action返回结果类型的事儿(上)

原文:ASP.NET MVC – 关于Action返回结果类型的事儿(上) 本文转自:博客园-文超的技术博客 一.         ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1.       ActionResult(base) 2.       ContentResult 3.       EmptyResult 4.       HttpUnau

关于Action返回结果类型的事儿(下)

原文:关于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>      /// Cont

【MVC】关于Action返回结果类型的事儿(上)

一. ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1. ActionResult(base) 2. ContentResult 3. EmptyResult 4. HttpUnauthorizedResult 5. JavaScriptResult 6. JsonResult 7. FileResult (base) 8. FileContentRes

ASP.NET MVC Action返回结果类型【转】

ASP.NET MVC 目前一共提供了以下几种Action返回结果类型: 1.ActionResult(base) 2.ContentResult 3.EmptyResult 4.HttpUnauthorizedResult 5.JavaScriptResult 6.JsonResult 7.FileResult (base) 8.FileContentResult 9.FilePathResult 10.FileStreamResult 11.RedirectResult 12.Redirec

Asp.net MVC 中Controller返回值类型ActionResult

内容转自 http://blog.csdn.net/pasic/article/details/7110134 Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonActionAttribute特性的(NoAction) 不能被重载 必须返回ActionResult类型 如: [csharp] view pl

Spring MVC方法的返回值类型

一,String类型作为返回值类型 返回值类型为String时,一般用于返回视图名称 1.当方法返回值为Null时,默认将请求路径当做视图 /jsp/thread/secondRequest.jsp 如果说没有试图解析器,如果返回值为Null携带数据只能用JSON 2.当方法返回一个String的字符串时,当字符串为逻辑视图名时只返回视图,如果要携带数据则使用request,session或者Json 如果要用Model或者ModelMap传递数据,那么Model或者ModelMap绝对是方法入

ASP.NET MVC中Controller返回值类型ActionResult

1.返回ViewResult视图结果,将视图呈现给网页 public class TestController : Controller { //必须存在Controller\Test\Index.cshtml文件 public ActionResult Index() { return View(); } } 2. 返回PartialViewResult部分视图结果,主要用于返回部分视图内容 //在View/Shared目录下创建ViewUserControl.cshtml部分视图 publi

MVC Action 返回类型[转]

一.         ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1.       ActionResult(base) 2.       ContentResult 3.       EmptyResult 4.       HttpUnauthorizedResult 5.       JavaScriptResult 6.       JsonR

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return