javascript - 如何使用 ViewBag 中的 JSON 填充 javascript 变量?

标签 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);
}

GetMessages 返回 POCO 消息列表,GetUserInfo 返回包含用户信息(id、名称等)的 POCO。

我想用用户信息的 JSON 表示形式填充 JavaScript 变量。

所以我想在 View 中做这样的事情:

...
<script>
    var userInfo = "@ViewBag.User.ToJson()"
</script>
...

我知道这行不通,但是有办法做到吗?我想避免在页面加载后只为了获取用户信息而执行 ajax 请求。

最佳答案

在 View 中你可以做这样的事情

@{
        var jss = new System.Web.Script.Serialization.JavaScriptSerializer();
        var userInfoJson = jss.Serialize(ViewBag.User);
}

在 javascript 中你可以将其用作

<script>


    //use Json.parse to convert string to Json
    var userInfo = JSON.parse('@Html.Raw(userInfoJson)');
</script>

关于javascript - 如何使用 ViewBag 中的 JSON 填充 javascript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667104/

相关文章:

c# - 处理动态生成表的链接按钮事件?

c# - 在 Azure 中生成并执行工作进程

asp.net-mvc - Ajax 重定向到页面而不是更新目标

c# - 具有不同签名的 Controller 操作方法

javascript - 延迟隐藏下拉菜单

javascript - 我如何在此 select2 表单上添加额外字段

asp.net - 如何在 Razor 中有条件地渲染表单?

javascript - Ajax卡在beforeSend阶段,不向PHP发送数据

javascript - 如果屏幕宽度小于 960 像素,请执行某些操作

c# - 使用 JSON.NET 解析 json 字符串