由于难以按所需格式转换数据,因此无法在Highcharts列图上进行深入分析

时间:2014-11-17 05:04:55

标签: jquery asp.net-mvc asp.net-mvc-3 highcharts

参考link上发布的问题,如何使用ajax从控制器返回以下格式的数据?令人困惑的部分是,如果data属性是一个对象数组 - 带有字符串和整数属性;那么为什么属性名称不随数据出现?如果它是一个数组数组,那么如何有一个不同类型的项目数组呢?

{
    'Animals': {
                name: 'Animals',
                data: [                  
                          ['Cows', 2],   
                          ['Sheep', 3]
                      ]
               },
    'Fruits':  {
                name: 'Fruits',
                data: [
                          ['Apples', 5],
                          ['Oranges', 7],
                          ['Bananas', 2]
                      ]
               },
    'Cars':    {
                name: 'Cars',
                data: [
                          ['Toyota', 1],
                          ['Volkswagen', 2],
                          ['Opel', 5]
                      ]
               }
}

我使用以下代码来调用控制器:

$('#container').highcharts({
        chart: {
            type: 'column',
            events: {
                drilldown: function (e) {
                    if (!e.seriesOptions) {
                        var chartObject = this;
                        $.ajax({
                            url: '@Url.Action("ActionMethodName")',
                            type: "GET",
                            cache: false,
                            data: e.point.name,
                            datatype: "json",
                            success: function (dataList) {
                                debugger;

                                var chart = chartObject,
                                    drilldowns = dataList, //dataList must be in the required format.
                                    series = drilldowns[e.point.name];

                                chart.addSeriesAsDrilldown(e.point, series);
                            },
                            error: function () {
                            }
                        });

// The rest of the code below
//
//

1 个答案:

答案 0 :(得分:1)

如果使用该格式生成类,然后将该类的对象作为Action Results中的序列化内容返回,则会更好。所以你需要做以下事情

1)从JSon格式创建类。有多种在线工具可供选择,例如http://json2csharp.com/

2)填充类的对象后,可以使用Javascript Serializer序列化对象。

string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Object);

3)从动作结果中返回json字符串。

return Content(json);