Asp.net MVC ActionResult返回值

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 dic = new Dictionary();  
     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序列化错误
Asp.net MVC ActionResult返回值_第1张图片
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返回值)