javascript - 在 Chart.js MVC c# 中使用模型中的数据

标签 javascript c# asp.net-mvc model chart.js

我正在尝试使用 Chart.js 制作图表,但无法将模型中的数据获取到图表中...有人可以帮助我吗?

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>

<canvas id="myChart" width="400" height="400"></canvas>
<script >
var ctx = document.getElementById('myChart').getContext('2d');
@{ 
    List<String> listKeys = new List<string>();
    List<int> listValues = new List<int>();
    foreach(var x in Model.PageViews)
    {
        listKeys.Add(x.Key + "");
        listValues.Add(x.Value);
    }
}

var chart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: @listKeys,
        datasets: [{
            label: "My First dataset",
            backgroundColor: 'rgb(255, 99, 132)',
            borderColor: 'rgb(255, 99, 132)',
            data: @listValues
        }]
    },
    options: {}
});

我尝试了多种方法,但似乎没有任何效果...

最佳答案

block @{ }内的代码是服务器端的。 script标签的其他内容是客户端的。

当您使用@listKeys/@listValues时,C# 运行ToString() 方法。它生成类似 System.Collections.Generic.List[System.String] 的字符串,而不是列表的内容。您需要改为生成 json 对象。

使用@Html.Raw(Json.Serialize(listKeys))而不是@listKeys来获取带有数据的正确json对象。

附注在 View 内使用大量服务器逻辑并不是一个好习惯。您可以删除 @{} block 并获取 Model.PageViews.KeysModel.PageViews.Values 的 json

关于javascript - 在 Chart.js MVC c# 中使用模型中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390193/

相关文章:

javascript - 当用户访问页面时如何动态缩放整个 ASP.Net MVC 应用程序

javascript - Chrome 扩展 : Open tab without popup

javascript - JavaScript 函数中的 JSON 数据渲染

c# - 在联接的基本 LINQ 查询上使用 lambda 表达式

c# - 为什么同一页面的每个页面加载后内存使用量都会增加

javascript - 如何验证我的预订日期?

c# - 这个重构是什么模式?

c# - 限制并行运行方法的数量

asp.net-mvc - 输入类型 ="hidden"vs htmlhelper 奇怪的问题

jquery - ASP.MVC 不加载 jQuery 包