2014-05-07 58 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

感謝您與菲爾的備忘單的鏈接。使它更清晰。 –