C# asp.net mvc highchart线形图json

C# asp.net mvc highchart线形图json,c#,jquery,asp.net-mvc,highcharts,C#,Jquery,Asp.net Mvc,Highcharts,我试图在以下位置获取行示例:使用jsonresult,但不知道如何实现这一点 控制器代码: public JsonResult GetLineData() { Dictionary<string, double[]> retVal = new Dictionary<string, double[]>(); double[] Array1 = {7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5,

我试图在以下位置获取行示例:使用jsonresult,但不知道如何实现这一点

控制器代码:

public JsonResult GetLineData()
    {
        Dictionary<string, double[]> retVal = new Dictionary<string, double[]>();
        double[] Array1 = {7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6};
        retVal.Add("Tokyo", Array1);

        double[] Array2 = { -0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5 };
        retVal.Add("New York", Array2);

        return Json(retVal.ToArray(), JsonRequestBehavior.AllowGet);
    }
public JsonResult GetLineData()
{
Dictionary retVal=新字典();
双[]数组1={7.0,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6};
retVal.Add(“东京”,第1列);
双[]数组2={-0.2,0.8,5.7,11.3,17.0,22.0,24.8,24.1,20.1,14.1,8.6,2.5};
retVal.Add(“纽约”,第2列);
返回Json(retVal.ToArray(),JsonRequestBehavior.AllowGet);
}
我的jqquery如下所示:

var chart;
    $(document).ready(function () {
        var options = {
            chart: {
                renderTo: 'container',
                defaultSeriesType: 'line',
                marginRight: 130,
                marginBottom: 25
            },
            title: {
                text: 'Monthly Average Temperature',
                x: -20 //center
            },
            subtitle: {
                text: 'Source: WorldClimate.com',
                x: -20
            },
            xAxis: {
                categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            },
            yAxis: {
                title: {
                    text: 'Temperature (°C)'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function () {
                    return '<b>' + this.series.name + '</b><br/>' +
           this.x + ': ' + this.y + '°C';
                }
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'top',
                x: -10,
                y: 100,
                borderWidth: 0
            },
            series: []
        };

        //Calls the JSON            
        jQuery.getJSON("GetLineData", null, function (items) {
            var series = {
                name: '',
                data: []
            };                
            jQuery.each(items, function (itemNo, item) {
                //Get the items from the JSON and add then
                //to the data array of the series                               
                series.data.push({
                    name: item.Key,
                    data: item.Value
                })                    
            });
            options.series.push(series);

            //Create the chart
            chart = new Highcharts.Chart(options);
            chart.render();
        });


    });
var图;
$(文档).ready(函数(){
变量选项={
图表:{
renderTo:'容器',
defaultSeriesType:“行”,
marginRight:130,
marginBottom:25
},
标题:{
文字:“月平均气温”,
x:-20/中心
},
副标题:{
文字:“来源:WorldClimate.com”,
x:-20
},
xAxis:{
类别:[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’,
‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’]
},
亚克斯:{
标题:{
文字:“温度(摄氏度)”
},
绘图线:[{
值:0,
宽度:1,
颜色:'#808080'
}]
},
工具提示:{
格式化程序:函数(){
返回“+this.series.name+”
+ 这个.x+':'+这个.y+'C'; } }, 图例:{ 布局:“垂直”, 对齐:“右”, 垂直排列:“顶部”, x:-10, y:100, 边框宽度:0 }, 系列:[] }; //调用JSON getJSON(“GetLineData”,null,函数(项){ 变量系列={ 名称:“”, 数据:[] }; 每个(项,函数(项号,项){ //从JSON中获取项目,然后添加 //到系列的数据数组 series.data.push({ 名称:item.Key, 数据:item.Value }) }); 选项。系列。推送(系列); //创建图表 图表=新的高点图表。图表(选项); chart.render(); }); });
图表显示时没有错误,但也没有两条线。
我猜这个系列的制作方法不对吧?提前感谢您的帮助。

我想您所需要做的就是

options.series.push(series);


或者您可以将整个数组作为单个项目推送到一个数组中

试试这个。我假设item.Value是一个数组,可以用作提供给图表的数据

//Calls the JSON            
        jQuery.getJSON("GetLineData", null, function (items) {
            var series = [];                
            jQuery.each(items, function (itemNo, item) {
                //Get the items from the JSON and add then
                //to the data array of the series                               
                series.push({
                    name: item.Key,
                    data: item.Value
                })                    
            });
            options.series = series;

            //Create the chart
            chart = new Highcharts.Chart(options);
            chart.render();
        });
使用,您无需考虑如何将数据从action方法传递到javascript。您可以在服务器端构建和绑定所有内容。以下是此库的基本行示例:

public ActionResult BasicLine()
    {
        Highcharts chart = new Highcharts("chart")
            .InitChart(new Chart
                       {
                           DefaultSeriesType = ChartTypes.Line,
                           MarginRight = 130,
                           MarginBottom = 25,
                           ClassName = "chart"
                       })
            .SetTitle(new Title
                      {
                          Text = "Monthly Average Temperature",
                          X = -20
                      })
            .SetSubtitle(new Subtitle
                         {
                             Text = "Source: WorldClimate.com",
                             X = -20
                         })
            .SetXAxis(new XAxis { Categories = ChartsData.Categories })
            .SetYAxis(new YAxis
                      {
                          Title = new XAxisTitle { Text = "Temperature (°C)" },
                          PlotLines = new[]
                                      {
                                          new XAxisPlotLines
                                          {
                                              Value = 0,
                                              Width = 1,
                                              Color = ColorTranslator.FromHtml("#808080")
                                          }
                                      }
                      })
            .SetTooltip(new Tooltip
                        {
                            Formatter = @"function() {
                                    return '<b>'+ this.series.name +'</b><br/>'+
                                this.x +': '+ this.y +'°C';
                            }"
                        })
            .SetLegend(new Legend
                       {
                           Layout = Layouts.Vertical,
                           Align = HorizontalAligns.Right,
                           VerticalAlign = VerticalAligns.Top,
                           X = -10,
                           Y = 100,
                           BorderWidth = 0
                       })
            .SetSeries(new[]
                       {
                           new Series { Name = "Tokyo", Data = new Data(new object[] { 7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6 }) },
                           new Series { Name = "New York", Data = new Data(new object[] { -0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5 }) },
                           new Series { Name = "Berlin", Data = new Data(new object[] { -0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0 }) },
                           new Series { Name = "London", Data = new Data(new object[] { 3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8 }) }
                       }
            );

        return View(chart);
    }
public ActionResult BasicLine()
{
Highcharts图表=新的Highcharts(“图表”)
.InitChart(新图表
{
DefaultSeriesType=图表类型.Line,
MarginRight=130,
MarginBottom=25,
ClassName=“图表”
})
.SetTitle(新标题)
{
Text=“月平均气温”,
X=-20
})
.SetSubtitle(新副标题)
{
Text=“来源:WorldClimate.com”,
X=-20
})
.SetXAxis(新的XAxis{Categories=ChartsData.Categories})
.SetYAxis(新YAxis)
{
Title=新的XAxisTitle{Text=“温度(°C)”},
绘图线=新[]
{
新的XAxisPlotLines
{
值=0,
宽度=1,
Color=ColorTranslator.FromHtml(“#808080”)
}
}
})
.SetTooltip(新工具提示
{
格式化程序=@“函数(){
返回“+this.series.name+”
+ 这个.x+':'+这个.y+'°C'; }" }) .SetLegend(新图例 { 布局=布局。垂直, 对齐=水平对齐。右, 垂直对齐=垂直对齐。顶部, X=-10, Y=100, 边框宽度=0 }) .SetSeries(新[] { 新系列{Name=“Tokyo”,Data=新数据(新对象[]{7.0,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6}), 新系列{Name=“纽约”,数据=新数据(新对象[]{-0.2,0.8,5.7,11.3,17.0,22.0,24.8,24.1,20.1,14.1,8.6,2.5}), 新系列{Name=“Berlin”,数据=新
public ActionResult BasicLine()
    {
        Highcharts chart = new Highcharts("chart")
            .InitChart(new Chart
                       {
                           DefaultSeriesType = ChartTypes.Line,
                           MarginRight = 130,
                           MarginBottom = 25,
                           ClassName = "chart"
                       })
            .SetTitle(new Title
                      {
                          Text = "Monthly Average Temperature",
                          X = -20
                      })
            .SetSubtitle(new Subtitle
                         {
                             Text = "Source: WorldClimate.com",
                             X = -20
                         })
            .SetXAxis(new XAxis { Categories = ChartsData.Categories })
            .SetYAxis(new YAxis
                      {
                          Title = new XAxisTitle { Text = "Temperature (°C)" },
                          PlotLines = new[]
                                      {
                                          new XAxisPlotLines
                                          {
                                              Value = 0,
                                              Width = 1,
                                              Color = ColorTranslator.FromHtml("#808080")
                                          }
                                      }
                      })
            .SetTooltip(new Tooltip
                        {
                            Formatter = @"function() {
                                    return '<b>'+ this.series.name +'</b><br/>'+
                                this.x +': '+ this.y +'°C';
                            }"
                        })
            .SetLegend(new Legend
                       {
                           Layout = Layouts.Vertical,
                           Align = HorizontalAligns.Right,
                           VerticalAlign = VerticalAligns.Top,
                           X = -10,
                           Y = 100,
                           BorderWidth = 0
                       })
            .SetSeries(new[]
                       {
                           new Series { Name = "Tokyo", Data = new Data(new object[] { 7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6 }) },
                           new Series { Name = "New York", Data = new Data(new object[] { -0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5 }) },
                           new Series { Name = "Berlin", Data = new Data(new object[] { -0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0 }) },
                           new Series { Name = "London", Data = new Data(new object[] { 3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8 }) }
                       }
            );

        return View(chart);
    }