J#中的C#Razor foreach循环语法

Cur*_*ing 3 javascript c# razor asp.net-mvc-4

我从谷歌图表中获得了以下javascript代码:

function drawTimeChart() {
    var dataArray = generateTimeChartArray();
    var data = google.visualization.arrayToDataTable([
    ['2001', '25'],
      ['2002', 35],
      ['2003', 25],
      ['2004', 55]
    ]);

    var options = {
        title: 'Reported devices in MAUDE based on the term since 1990',
        backgroundColor: '#EFEEEF',
        hAxis: { showTextEvery: 4 }
    };

    var chart = new google.visualization.LineChart(document.getElementById('MaudeTimeChart'));

    chart.draw(data, options);
}
Run Code Online (Sandbox Code Playgroud)

我插入数据的数据我想动态添加.我试过这样做:

var data = google.visualization.arrayToDataTable([
                @foreach (var item in Model.NumberOfReportedRecords){
                    [@Html.DisplayFor(modelItem => item.year), @Html.DisplayFor(modelItem => item.Status)]
                 }
                ]);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何使这项工作?

Vla*_*irs 6

您不需要使用Html.DisplayFor,因为它将呈现模板而不仅仅是值.仅@item.year用于获取该值,如:

var data = google.visualization.arrayToDataTable([
                @foreach (var item in Model.NumberOfReportedRecords){
                    ['@item.year', '@item.Status']
                 }
                ]);
Run Code Online (Sandbox Code Playgroud)

更新1.

此外,我对你如何定义foreach循环有一些疑问 - 它可能不起作用,但你也可以尝试类似的东西(@: 明确指出内容的开始):

@foreach (var item in Model.NumberOfReportedRecords) 
        {
            @:['@(item.year)', '@(item.Status)'],
        }
Run Code Online (Sandbox Code Playgroud)

  • 你还应该看看[HttpUtility.JavaScriptStringEncode](http://msdn.microsoft.com/en-us/library/dd991914(v = vs.110).aspx)来清理输出 (3认同)