我有一个在页面预渲染事件上执行的 java 脚本函数:
protected void Page_PreRender(object sender, EventArgs e)
{
var script = "<script>CreateProjectTree('" + serializedSearchCriteria + "');" + "</script>";
ClientScript.RegisterStartupScript(typeof (string), "createProjectTree", script);
}
Page_Load
传递给上述 java 脚本函数的变量是在事件中填充的序列化 JSON :
serializedSearchCriteria = JsonConvert.SerializeObject(ProjectSearchCriteria);
这是 serializedSearchCriteria 序列化后的值:
{"QueryString":null,"ProjectName":"\"24\"","SeasonName":"","MemberName":"","CompanyName":"","CompanyRole":0,"CompanyRoles":"","Year":""}
您可以看到序列化它成功地转义了 value 的双引号24
。
这里的问题是,当我在调试模式下查看 java 脚本函数时,变量 serializedSearchCriteria 的值现在是这样的:
{"QueryString":null,"ProjectName":""24"","SeasonName":"","MemberName":"","CompanyName":"","CompanyRole":0,"CompanyRoles":"","Year":""}"
注意24
现在。它不再逃脱。因此,一旦该对象位于 java 脚本函数中,它就不再是有效的 JSON。
为什么会这样?
该对象应该以 SERIALIZED 形式出现……在某些时候,它会被取消序列化。有谁知道为什么?