从控制器发送颜色十六进制到没有引号的视图成为“?

时间:2014-03-10 16:52:24

标签: c# javascript json html5 asp.net-mvc-4

我正在努力通过JSON发送值和颜色对,颜色值HAS要返回到视图中的javascript color: "#FFFFFF",例如,我可以将它发送到这样的视图,但是第二个浏览器读取它变为color: "#FFFFFF"这不起作用。这是我的代码片段:

values.Add(new StudentBrandsApp.Models.StatsValues() { value = Convert.ToInt32(dr.ItemArray[1].ToString()), color = "#F38630" });

        // populate with some values.
        var serializer = new JsonSerializer();
        var stringWriter = new StringWriter();
        var writer = new JsonTextWriter(stringWriter);
        writer.QuoteName = false;
        serializer.Serialize(writer, values);
        writer.Close();
        var json = stringWriter.ToString();
        json = HttpUtility.HtmlEncode(json);
        ViewData["json"] = json; 

在我的javascript中:

<script src="~/Scripts/Chart.js"></script>
<script type="text/javascript">

    @{string jsonstring = ViewData["json"].ToString();}
    var data = @jsonstring;

    //Get the context of the canvas element we want to select
    var ctx = document.getElementById("myChart").getContext("2d");
    var myNewChart = new Chart(ctx).Pie(data);
    //Get context with jQuery - using jQuery's .get() method.
    var ctx = $("#myChart").get(0).getContext("2d");
    //This will get the first returned node in the jQuery collection.
    var myNewChart = new Chart(ctx);
    new Chart(ctx).Pie(data, options);
</script>

这是关于如何为饼图表示值和颜色的chart.js文档:http://www.chartjs.org/docs/

1 个答案:

答案 0 :(得分:3)

您需要编写@Html.Raw(jsonString)以防止Razor自动转义它。