2014-05-07 60 views
0

我正在使用ASP.NET MVC Razor View将对象序列化为JSON。输出是在调试正确,而是因为它避开了所有的报价,我认为MVC,可以尝试,因为最终的输出端像这样对它进行编码:Newtonsoft Json.NET序列化对象在ASP.NET MVC中不能正确呈现查看

{"label":"Blowby","value":17},{"label":"BlownInsert","value":11},{"label":"Blowout","value":13},{"label":"Contamination","value":7},{"label":"CrushedInsert","value":3},{"label":"Reclaim","value":8},{"label":"ShortShot","value":4},{"label":"Sinks","value":10} 

JSON格式正是我想要的,而是的& quot;它需要实际的报价。我试过HtmlUtilites.HtmlDecode(),但没有运气。我如何修复输出?

下面是更多的代码正在使用,如果它有帮助,这是在.cshtml/Razor文件。

List<LightSwitchApplication.Models.GraphData> DonutGraphData = (List<LightSwitchApplication.Models.GraphData>)ViewData["DonutGraphData"]; 
string donutSerialized = Newtonsoft.Json.JsonConvert.SerializeObject(DonutGraphData); 

而GraphData类别:

namespace LightSwitchApplication.Models 
{ 
public class GraphData 
{ 
    public string label { get; set; } 
    public int value { get; set; } 

    public GraphData(string label, int value) 
    { 
     this.label = label; 
     this.value = value; 
    } 
} 

}

和实际变量被输出到检视:

if ($('#donut-graph').length) { 
      Morris.Donut({ 
       element: 'donut-graph', 
       data: @donutSerialized, 
       formatter: function (x) { 
        return x 
       } 
      }); 
     } 

这里是donutSerialized的在调试器的输出:

"[{\"label\":\"Blowby\",\"value\":17},{\"label\":\"BlownInsert\",\"value\":11},{\"label\":\"Blowout\",\"value\":13},{\"label\":\"Contamination\",\"value\":7},{\"label\":\"CrushedInsert\",\"value\":3},{\"label\":\"Reclaim\",\"value\":8},{\"label\":\"ShortShot\",\"value\":4},{\"label\":\"Sinks\",\"value\":10}]" 
+0

你是如何呈现这个字符串? – Matthew

+0

您在哪里以及如何使用“最终输出”? –

+0

如果您可以向我们展示您正在使用的代码,这将非常有帮助。 –

回答

6

默认情况下,C#生成的任何内容都将由Razor编码。

所以,当你做@methodCall()它将被编码。

如果您希望值保持原样,可以使用@ Html.Raw(@methodCall())。

这里是一个快速链接到一个备忘单由菲尔哈克 - http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/

+0

感谢您与菲尔的备忘单的链接。使它更清晰。 –