我有一个C#字符串变量,该变量具有以下序列化的Json字符串:
{
"Video": "1",
"Voice": "1"
}
,我正尝试通过postMessage
发布,如下所示:
string jsonVerticalTypeQuantity = Newtonsoft.Json.JsonConvert.SerializeObject(VerticalTypeQuantity);
<script>
$(document).ready(function () {
parent.postMessage({ "SelectedComponent": "@jsonVerticalTypeQuantity"}, "*");
});
</script>
但是当我在浏览器中选中它时,它会添加诸如"
之类的多余字符,这是为什么呢?以及如何按原样发布JSON字符串?
答案 0 :(得分:2)
@
指令在对服务器端Razor变量使用时自动将输出字符串编码为已编码的HTML。您应该放置@Html.Raw()
助手来返回未编码的JSON字符串:
parent.postMessage({ "SelectedComponent": @Html.Raw(jsonVerticalTypeQuantity) }, "*");
或使用变量作为替代:
@{
string jsonVerticalTypeQuantity = Newtonsoft.Json.JsonConvert.SerializeObject(VerticalTypeQuantity);
}
<script>
$(document).ready(function () {
var jsonData = @Html.Raw(jsonVerticalTypeQuantity);
parent.postMessage({ "SelectedComponent": jsonData }, "*");
});
</script>
相关问题:
MVC failed to make a json string in view for a variable in javascript