MVC C#应用程序,模型中的Json数据

时间:2013-06-10 23:45:25

标签: c# asp.net-mvc json

这可能看起来很奇怪,但我希望我的模型包含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>

我收到错误 - “路径中的非法字符。

完成此任务的正确方法是什么?

3 个答案:

答案 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的一个很好的候选人。