【发布时间】:2017-05-05 12:55:38
【问题描述】:
我需要在一个 ASP 项目中插入一个图表,MVC 模式。 我自己定义了Json格式所需的字符串,它似乎可以正常工作。 控制器定义的字符串是:
{
labels: ['America','Europa', 'Global','Oceania'],
datasets: [{
data: [0.20, 0.20, 0.20, 0.40],
backgroundColor: ['#a3aaf7','#89a8ff', '#01469b', '#0d1156'],
hoverBackgroundColor: ['#beed9e', '#84ffbd', '#0afb00', '#058217']
}]
}
要插入图表,使用chart.js,显然我需要将此变量传递给相应的javascript函数...我尝试使用html帮助器(@html.displayfor)以及对模型变量的直接引用(例如@Model.Tipologie_json):
<script>
var tipologia=new string(@Model.Tipologie_json);
window.onload=function(){
var ctx = document.getElementById("Tipologia").getContext("2d");
var myPieChart = new Chart(ctx, { type: 'pie', data: tipologia });
}
</script>
但是 HTML 被转换为:
var tipologia=new string({labels:['Equity'],datasets:[{ data:[1.00000],backgroundColor:['#a3aaf7'],hoverBackgroundColor:['#beed9e']}]});
因此它将 ' 转换为其等效代码,这会使图表的计算失败。 如何在不进行任何字符转换的情况下将变量传递给 HTML?非常感谢
【问题讨论】:
-
您可以使用这些数组作为属性创建一个类,填充它并使用
JsonConvert.Serialise(newtonsofts json nuget)。如果您将其作为字符串进行,我认为您不会像这样对引号进行 html 编码 -
是的,只是不要创建字符串。您实际上甚至不需要自定义类。您可以定义一个匿名对象,并将其直接序列化为 JSON。
-
试试这个
@Html.Raw(Json.Encode(Model.Tipologie_json))。
标签: javascript c# asp.net-mvc