我的网络应用程序出现问题,我从数据库中检索数据,然后将其通过ViewBag传递给View,最后将数据转换为javascript对象。
这是虚拟数据的示例
控制器
public ActionResult Index()
{
var boxer = new
{
Name = "Juan Manuel Márquez",
Division = "Welterweight"
};
ViewBag.Data = new
{
Boxer = boxer
};
return View();
}
查看
<div>
Hello there!
</div>
@section scripts {
<script>
$(document).ready(function() {
var myModel = JSON.parse('@Html.Raw(Json.Encode(ViewBag.Data))');
console.log(myModel);
});
</script>
}
结果如预期:具有模型属性的对象。但问题是拳击手的名字包括他的别名,例如:
var boxer = new
{
Name = "Juan Manuel \"Dinamita\" Márquez",
Division = "Welterweight"
};
这导致下一个错误,因为JSON.Encode生成一个JSON字符串而没有转义引号
VM38:1未捕获的SyntaxError:位于31的JSON中的意外标记D. 在JSON.parse() 在HTMLDocument。 (指数:53) 在火上(jquery-1.10.2.js:3062) at Object.fireWith [as resolveWith](jquery-1.10.2.js:3174) 在Function.ready(jquery-1.10.2.js:447) 在HTMLDocument.completed(jquery-1.10.2.js:118)
有什么建议吗?
此致
答案 0 :(得分:2)
你不需要Json解析这里尝试
@section scripts {
<script>
$(document).ready(function() {
var myModel =@Html.Raw(Json.Encode(ViewBag.Data));
console.log(myModel);
});
</script> }
并删除@ html.Raw中的单引号 它应该看起来像
var myModel =@Html.Raw(Json.Encode(ViewBag.Data));