美文网首页恰同学少年.NET
Asp.net MVC ActionResult返回值

Asp.net MVC ActionResult返回值

作者: 凌雲木 | 来源:发表于2017-07-05 11:18 被阅读202次

    1 视图类型

    • 返回视图
         public ActionResult Index()
            {           
                return View();
            }
    

    2 文本类型

    可以指定返回的文本内容,编码格式和文本类型(MIME类型)

    • 返回JavaScript脚本
     public ActionResult SetJS()
            {
                String STR = "alert('ceshi');";
                return Content(STR, "text/javascript");
    
            }
    
    • 返回CSS样式
     public ActionResult Css()
            {
                HttpCookie cookie = Request.Cookies["theme"] ?? new HttpCookie("theme", "default");
                switch (cookie.Value)
                {
                    case "Theme1": return Content("body{font-family: SimHei; font-size:1.2em}", "text/css");
                    case "Theme2": return Content("body{font-family: KaiTi; font-size:1.2em}", "text/css");
                    default: return Content("body{font-family: SimSong; font-size:1.2em}", "text/css");
                }
            }
    

    3 JSON类型

    public ActionResult Json()  
     {  
         Dictionary<string, object> dic = new Dictionary<string, object>();  
         dic.Add("id", 100);  
         dic.Add("name", "liming");  
         return Json(dic, JsonRequestBehavior.AllowGet);  
     }  
    

    注意:若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet。

    3 图片多媒体类型

    -图片类型

      public ActionResult Image(string id)
            {
                string path = Server.MapPath($"/images/{id}.jpg");
                return File(path, "image/jpeg");
            }
    

    5 JavaScript脚本类型(同文本类型返回脚本的方法)

     public ActionResult GetData()
            {
                string script = "alert('asdf');";
                return JavaScript(script);
    
            }
    

    6 文件类型

    下载excel表格文件的例子

     public FileStreamResult Download()
            {
                string fileName = "超市设备台账.xlsx";//客户端保存的文件名
                string filePath = Server.MapPath("~/Downloads/123.xlsx");//路径
                LogService.AddOperateLogInfo(CurrentUser.UserID, $"导出设备台账", "导出");//计入操作日志
                return File(new FileStream(filePath, FileMode.Open), "text/plain",fileName);
            }
    

    7常见程序异常

    • 1Json序列化错误
    image.png

    这是因为Json方法实际上采用的是JavaScriptSerializer类的Serialize和Desserialize方法实现的。JavaScriptSerializer类有一个属性MaxJsonLength,这个属性限制了序列化为Json字符串的长度,默认为4M的Unicode字符串数据。若在项目中需要序列大数据超过4M,系统就会抛异常了。可采用如下解决此问题。
    在控制器中添加具有返回JsonResult 类型的方法LargeJson(重载,一个允许get请求),然后在需要返回大数据json的action调用,即用return LargeJson()代替原先的return Json()

    public JsonResult LargeJson(object data)
    {
         return new JsonResult()
          {
                    Data = data,
                    MaxJsonLength = Int32.MaxValue,//Json序列化数据限制修改
            };
    }
    public JsonResult LargeJson(object data,JsonRequestBehavior behavior)
    {
                return new System.Web.Mvc.JsonResult()
                {
                    Data = data,
                    JsonRequestBehavior = behavior,
                    MaxJsonLength = Int32.MaxValue
                };
    }
    

    相关文章

      网友评论

      本文标题:Asp.net MVC ActionResult返回值

      本文链接:https://www.haomeiwen.com/subject/sjofhxtx.html