1

我在将数组从控制器传递到视图中的 javascript 时遇到了一些问题。我正在使用 ASP .Net MVC3,我正在尝试使用数据库中的数据制作一些图表/图形,我找到了 HighCharts javascript,我正在尝试使用它。

这是示例:

$(function () {
var chart;
$(document).ready(function() {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: 'Browser market shares at a specific website, 2010'
        },
        tooltip: {
            formatter: function() {
                return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
            }
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    color: '#000000',
                    connectorColor: '#000000',
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: [
                ['Firefox',   45.0],
                ['IE',       26.8],
                ['Chrome',       12.8],
                ['Safari',    8.5],
                ['Opera',     6.2],
                ['Others',   0.7]
            ]
        }]
    });
});

});

我做了这门课:

public class RegistoPie
{
    public string na { get; set; }
    public double da { get; set; }


    public RegistoPie(string n, double d) {

        na = n;
        da = d;

    }
}

我将此对象发送到试图在javascript中填充数据变量的视图:

var pie = new [] { new RegistoPie("papa",20.0), new RegistoPie("pepe",50.0) };

但它返回的内容如下:

[{"na":"papa","da":20},{"na":"pepe","da":50}];

所以它的语法与javascript中的数据变量不同,只有:

[[string,double], [,] , ... ]

帮助任何人?!泰,赫尔德

4

1 回答 1

2

在控制器中:

ViewBag.Array = new[] { new RegistoPie("papa", 20.0), new RegistoPie("pepe", 50.0) };

在视图中:

@{
    var myArray = ViewBag.Array as TestMVC.Controllers.RegistoPie[];

    for (int i = 0; i < myArray.Length; i++)
    {
        var item = myArray[i];
    <text> ['@item.na', @item.da] @((myArray.Length - 1) != i ? "," : "")</text>
    }
}
于 2012-06-20T15:59:34.423 回答