我正在使用ASP.NET MVC Razor View将对象序列化为JSON。输出在调试器中是正确的,但是因为它转义了每个引号,所以我认为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格式正是我想要的格式,但不是“需要实际报价”。我没有运气尝试过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;
}
}
}
并将实际变量输出到View:
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}]"
默认情况下,由C#生成的任何内容都将由Razor进行HTML编码。
因此,当您执行@methodCall()时,它将被编码。
如果希望该值保持不变,则可以使用@ Html.Raw(@methodCall())。
这是Phil Haack的备忘单的快速链接-http: //haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句