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

ExpandedBlockStart.gif 代码
  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 

 

posted on 2015-01-08 23:50  v.e.n.u.s 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jx270/p/4212163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值