这可能看起来很奇怪,但我希望我的模型包含Json数据,然后我可以使用javascript来呈现带有内容的html。我的代码如下所示 -
我的控制器 -
public ActionResult Index()
{
Object myObject = FillMyObjectWithData();
string json = new JavaScriptSerializer().Serialize(myObject);
return View(json);
}
我的观点 -
@model string /*Json data will be in the model*/
<div>
//standard html in here
</div>
<script>
$(document).ready(function() {
doCoolStuff(@Model);
});
</script>
我收到错误 - “路径中的非法字符。”
完成此任务的正确方法是什么?
答案 0 :(得分:7)
问题出在return View(json);
你得到错误的函数重载View(string)
,这是通过名称获取视图的重载。尝试:
return View((object)json);
您还需要没有HTML编码的原始JSON:
doCoolStuff(@Html.Raw(@Model));
答案 1 :(得分:0)
尝试:
@model string /*Json data will be in the model*/
<div>
//standard html in here
</div>
<script>
$(document).ready(function() {
var temp = @model;
doCoolStuff(temp);
});
</script>
答案 2 :(得分:0)
你尝试这种方式的动机是什么?如果你真的想要返回json,你可能会更好地在视图/页面加载后使用javascript / jquery来渲染你的UI来制作一个ajax请求。这将是KnockoutJS的一个很好的候选人。