emz*_*ero 21 javascript asp.net asp.net-mvc json viewbag
我有这个索引动作:
public ActionResult Index()
{
var repo = (YammerClient) TempData["Repo"];
var msgCol = repo.GetMessages();
ViewBag.User = repo.GetUserInfo();
return View(msgCol.messages);
}
Run Code Online (Sandbox Code Playgroud)
GetMessages返回POCO消息列表,GetUserInfo返回一个POCO,其中包含用户信息(id,name等).
我想用用户信息的JSON表示填充javascript变量.
所以我想在视图中做这样的事情:
...
<script>
var userInfo = "@ViewBag.User.ToJson()"
</script>
...
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,但有办法吗?我想避免在加载页面后只是为了获取用户信息而执行ajax请求.
san*_*eev 45
在View中你可以做这样的事情
@{
var jss = new System.Web.Script.Serialization.JavaScriptSerializer();
var userInfoJson = jss.Serialize(ViewBag.User);
}
Run Code Online (Sandbox Code Playgroud)
在javascript中你可以使用它
<script>
//use Json.parse to convert string to Json
var userInfo = JSON.parse('@Html.Raw(userInfoJson)');
</script>
Run Code Online (Sandbox Code Playgroud)
将此解决方案用于简单对象.但是我在将数组转换为js对象时遇到了一些问题,所以我将离开我在这里做的事情.
C#
@{
using Newtonsoft.Json;
ViewBag.AvailableToday = JsonConvert.SerializeObject(list);
}
Run Code Online (Sandbox Code Playgroud)
JS
var availableToday = JSON.parse('@Html.Raw(ViewBag.AvailableToday)');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37935 次 |
最近记录: |