• 【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 
  • 相关阅读:
    CSS(二)样式优先级别和css的单位刻度
    Ural 1416 Confidential
    UVA 10600
    UESTC 1558 Charitable Exchange
    ZOJ 3349 Special Subsequence
    mysql主从复制
    debian安装mysql
    lpeg
    多线程程序 怎样查看每个线程的cpu占用
    linux TIME_WAIT过多的解决方法
  • 原文地址:https://www.cnblogs.com/jx270/p/4212163.html
Copyright © 2020-2023  润新知