Newtonsoft Json.. NET序列化对象在ASP中不能正确呈现.. NET MVC视图

本文关键字:NET MVC 视图 不能 序列化 Json 对象 ASP Newtonsoft | 更新日期: 2023-09-27 18:02:06

我使用的是ASP。. NET MVC Razor视图将对象序列化为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格式正是我想要的,但它需要实际的引号而不是"我尝试过htmlutilities . 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}]"

Newtonsoft Json.. NET序列化对象在ASP中不能正确呈现.. NET MVC视图

任何从c#生成的东西默认都是由Razor编码的HTML。

所以当你执行@methodCall()时它将被编码

如果你想让值保持原样,你可以使用@Html.Raw(@methodCall())。

这里有一个快速链接到Phil Haack的小抄- http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/