如何在ASP.Net 5 / MVC 6中使用DotNet HighChart

时间:2016-04-04 04:29:33

标签: jquery asp.net-mvc razor

我正在尝试在ASP.Net 5 / MVC 6项目中使用DotNet HighChart库来向页面添加图表。

我从NuGet导入了库并在_layout视图中添加了scipt引用:

<script type="text/javascript" src="~/lib/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="~/lib/highcharts/highcharts.js"></script>

我已经定义了一个ViewModel类来保存Chart:

public class IndexReportViewModel
{
    public Highcharts Chart { get; set; }
}

并创建它并用控制器中的stock示例填充它:

    public IActionResult Index()
    {
        IndexReportViewModel ivm = new IndexReportViewModel();

        Highcharts chart = new Highcharts("chart")
            .SetXAxis(new XAxis
            {
                Categories = new[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
            })
            .SetSeries(new Series
            {
                Data = new Data(new object[] { 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4 })
            });

        ivm.Chart = chart;
        return View(ivm);
    }

Controller具有所需的命名空间:

using DotNet.Highcharts;
using DotNet.Highcharts.Options;
using DotNet.Highcharts.Helpers;

最后我在索引视图中引用了它:

@model TimeCheckBES.ViewModels.Reports.IndexReportViewModel

<p>My Chart</p>
   @Model.Chart

当页面加载时,它似乎只显示HighCharts对象的类型,例如:

HighCharts Fail

有什么想法吗?我试过了:

  • 将js引用添加到视图本身而不是_layout(我已经在开发模式下检查了页面并且它们正在加载)。
  • 在索引视图中调用@Model.Chart.ToHtmlString()
  • 不使用ViewModel并直接返回图表对象。

我认为我必须遗漏一些关于js脚本工作方式但却无法想象它可能是什么的东西。

编辑:其他信息

我还将名称空间直接添加到视图中,尽管编译器认为它们不是必需的。

@using DotNet.Highcharts;
@using DotNet.Highcharts.Options;
@using DotNet.Highcharts.Helpers;

1 个答案:

答案 0 :(得分:0)

我删除了我之前的回答。 Highcharts目前不支持ASP.NET 5 / MVC 6。所以,你有两个选择:选择一个,你可以等它们来更新他们的东西或两个你可以用旧框架创建一个单独的项目,并在你当前的项目中链接到它。 http://dotnethighcharts.codeplex.com/这是指向其codeplex网站的链接。如果您想尝试使其工作,这有例子。顺便说一下,我已经尝试了,这比它的价值还要多。

您还可以选择使用JQuery来获得相同的结果。

的JavaScript

$(function () {
    $('#container').highcharts({
        chart: {
            type: 'area'
        },
        title: {
            text: 'Historic and Estimated Worldwide Population Growth by Region'
        },
        subtitle: {
            text: 'Source: Wikipedia.org'
        },
        xAxis: {
            categories: ['1750', '1800', '1850', '1900', '1950', '1999', '2050'],
            tickmarkPlacement: 'on',
            title: {
                enabled: false
            }
        },
        yAxis: {
            title: {
                text: 'Billions'
            },
            labels: {
                formatter: function () {
                    return this.value / 1000;
                }
            }
        },
        tooltip: {
            shared: true,
            valueSuffix: ' millions'
        },
        plotOptions: {
            area: {
                stacking: 'normal',
                lineColor: '#666666',
                lineWidth: 1,
                marker: {
                    lineWidth: 1,
                    lineColor: '#666666'
                }
            }
        },
        series: [{
            name: 'Asia',
            data: [502, 635, 809, 947, 1402, 3634, 5268]
        }, {
            name: 'Africa',
            data: [106, 107, 111, 133, 221, 767, 1766]
        }, {
            name: 'Europe',
            data: [163, 203, 276, 408, 547, 729, 628]
        }, {
            name: 'America',
            data: [18, 31, 54, 156, 339, 818, 1201]
        }, {
            name: 'Oceania',
            data: [2, 2, 2, 6, 13, 30, 46]
        }]
    });
});

HTML

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script async src="//jsfiddle.net/arx54ufv/embed/"></script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>