从 ViewBag 填充 javascript 变量?

Populate javascript variable from ViewBag?

我在 Whosebug 上看到我们可以这样做以使用 ViewBags(使用 razor)填充 js 变量:

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

有了这个:

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

我想用 aspx 而不是 razor 做同样的事情。你能帮帮我吗?

public 属性 添加到您的页面并在页面加载时填充它(您可能必须在页面初始化时执行此操作,我可以'我不记得先是哪个进程了)。

public UserType UserToSerialize {get; set;}

protected void Page_Load(object sender, EventArgs e)
{
    UserToSerialize = LoadUser(); //I assume you've got some magic to do this already
}

标记:

<script>
  var userInfo = JSON.parse("<%# new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(UserToSerialize) %>");
</script>

注意我使用 UserToSerialize 以避免干扰 Page.User property

在我的控制器中:

Viewbag.test="Thanks to you it works!"

在我的 aspx 中:

public String test {get; set;}
protected void Page_Load(object sender, EventArgs e)
{
  test = ViewBag.test; 
}

<script>
  alert('<%=test%>');
</script>

结果:感谢你,它成功了!