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序列化错误
这是因为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
};
}