1

ビュー内のコントローラーからJavaScriptに配列を渡すのに問題があります。ASP .Net MVC3を使用していて、データベースからのデータを使用していくつかのグラフ/グラフィックを作成しようとしています。HighChartsjavascriptを見つけて、それを使用しようとしています。

次に例を示します。

$(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], [,] , ... ]

誰か助けて?Ty、Hélder

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 に答える