Asp.Net MVC控制器中Action的返回值类型
2016-12-30 16:32
387 查看
控制器中Action的返回值类型有很多,最常见的是ActionResult,通过查看源代码可以发现ActionResult是一个抽象类,它有很多的子类。如果Action的返回值类型为ActionResult,那么可以返回任意子类对象;如果Action的返回值类型为某一具体的子类型,例如:ContentResult,那么就只可以返回ContentResult类型对象。接下来说几个平时比较常用的返回值类型:ViewResult、ContentResult、JsonResult和RedirectToRouteResult。
后台代码:
前台代码:
1)返回Json数组
2)返回Json对象
JsonResult还是String,都需要使用JSON.parse(Data)手动转换一下,才能把字符串变为JSON对象。
2.当返回到前端的json数据,标准时如–”{“Age”:”abcde”,”name”:”rer”}”,前端抓包的值和我给的一样。
只需要保证响应报文头的ContentType = “application/json,JQ 都会自动把JSON字符串转换为JSON对象。
ViewResult
返回值为ViewResult即返回展示给用户的前台页面(视图),return View()可以返回本控制器内的任意视图。当return View()返回与Action不同名的视图时会直接展示视图,而不是执行对应的Action方法。public ViewResult Index() { UserInfoModel userInfoModel = new UserInfoModel(); userInfoModel.AddTime = DateTime.Now; userInfoModel.UserName = "用户名"; int number = 123; //【重载1】默认返回与Action同名的视图 return View(); //【重载2】返回本控制器下的Add视图 return View("Add"); //【重载3】一般传递的参数对象的类型与视图的模型类一致 return View("Add", userInfoModel); }
ContentResult
ContentResult用于将字符串直接向客户端输出。后台代码:
public ContentResult GetUserInfo() { string userInfo = "[{\"UserName\":\"蝈蝈\",\"Age\":\"18\",\"PhoneNumber\":\"18233199999\"}," + "{\"UserName\":\"果果\",\"Age\":\"16\",\"PhoneNumber\":\"18233199999\"}," + "{\"UserName\":\"郭郭\",\"Age\":\"20\",\"PhoneNumber\":\"18233199999\"}]"; return Content(userInfo); }
前台代码:
function TestActionResult_Index_AddUserInfo1(userInfo) { //先把字符串转换为Json对象 var userInfoArray = JSON.parse(userInfo); for (var i = 0; i < userInfoArray.length; i++) { $("<tr></tr>").append("<td>" + userInfoArray[i].UserName + "</td>") .append("<td>" + userInfoArray[i].Age + "</td>") .append("<td>" + userInfoArray[i].PhoneNumber + "</td>") .appendTo($("#TestActionResult_Index_tb")); } }
JsonResult
JsonResult首先将指定的对象序列化为Json字符串,然后将字符串写入到HTTP输出流。由于Json字符串在MVC前后台交互过程中使用频率很高,所以多举几个例子。1)返回Json数组
public JsonResult GetUserInfoJsonArray() { List<object> userInfoList = new List<object>(); //userInfoList添加匿名对象 userInfoList.Add(new { UserName="蝈蝈",Age=18,PhoneNumber="18233199999" }); userInfoList.Add(new { UserName="果果",Age=16,PhoneNumber="18233199999" }); userInfoList.Add(new { UserName="郭郭",Age=20,PhoneNumber="18233199999" }); //如果请求方式为get,则必须设置JsonRequestBehavior.AllowGet return Json(userInfoList, JsonRequestBehavior.AllowGet); }
2)返回Json对象
public JsonResult GetUserInfoJsonObject() { List<object> userInfoList = new List<object>(); userInfoList.Add(new { UserName = "蝈蝈",Age = 18,PhoneNumber = "18233199999" }); userInfoList.Add(new { UserName = "果果",Age = 16,PhoneNumber = "18233199999" }); userInfoList.Add(new { UserName = "郭郭",Age = 20,PhoneNumber = "18233199999" }); //【方法1】返回匿名对象或实例对象 var resultList = new { Company = "热血传奇", President = "蝈蝈", UserInfoList = userInfoList }; return Json(resultList, JsonRequestBehavior.AllowGet); //【方法2】返回Dictionary对象 Dictionary<string, object> dict = new Dictionary<string, object>() { {"Company","热血传奇"}, {"President","蝈蝈"}, {"UserInfoList",userInfoList} }; return Json(dict, JsonRequestBehavior.AllowGet); }
RedirectToRouteResult
RedirectToRouteResult可以跳转到本项目内任意控制器的Action,当重定向路由时会根据参数执行对应的控制器下的Action方法,而不是直接展示页面。public ViewResult Index() { UserInfoModel userInfoModel = new UserInfoModel(); userInfoModel.AddTime = DateTime.Now; userInfoModel.UserName = "用户名"; int number = 123; //【重载1】访问Home控制器下的Add方法 return RedirectToAction("Add", "Home"); //【重载2】访问Home控制器下的Add方法,并且参数id=6 return RedirectToAction("Add", "Home", new {id = 6}); }
ContentResult与JsonResult返回Json数据的区别
1.当返回到前端的json数据,不标准时如–”{\”Age\”:\”abcde\”,\”name\”:\”rer\”}”,前端抓包的值和我给的一样。不管你的返回值类型是JsonResult还是String,都需要使用JSON.parse(Data)手动转换一下,才能把字符串变为JSON对象。
2.当返回到前端的json数据,标准时如–”{“Age”:”abcde”,”name”:”rer”}”,前端抓包的值和我给的一样。
只需要保证响应报文头的ContentType = “application/json,JQ 都会自动把JSON字符串转换为JSON对象。
相关文章推荐
- Asp.Net MVC 利用ReflectedActionDescriptor判断Action返回类型
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- 关于asp.net mvc中Controller中的方法返回值类型ActionResult及其子类的理解
- ASP.NET MVC Action返回结果类型【转】
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- ASP.NET MVC中Controller返回值类型ActionResult
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- Asp.net MVC中Controller返回值类型ActionResult
- asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- 【转】ASP.Net MVC Action 返回类型
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- 【ASP.NET专题】(6)——ASP.NET MVC中ActionResult的其他返回值
- 【翻译】ASP.NET MVC : 构建安全的控制器Action
- ASP.NET MVC中Action返回值类型
- Asp.Net MVC中不指定View Name时如何返回ActionResult的
- Asp.net Mvc Codeplex Preview 5 第三篇 实现Action参数传递繁杂类型
- Asp.net Mvc Codeplex Preview 5 第三篇 实现Action参数传递繁杂类型
- [翻译] ASP.NET MVC Tip #2 - 创建可以返回Excel文档的自定义ActionResult