Razor语法:特定索引中的输出字符串数组

时间:2017-01-19 17:21:33

标签: javascript arrays asp.net-mvc razor

我有一个MVC类输出用户等级和数量的列表:

public class GradeNumModel
{
    public int Grade;
    public int Count;
}

伴随着一系列主题名称:

公共类GradeListModel     {         public string [] Names = new string [7];

    public GradeListModel()
    {
        //Ustawienie pierwszych indeksów na zero pomaga uniknąć problemów przy dodawaniu wartości
        Names[0] = "";
        Names[1] = "Niedostateczny";
        Names[2] = "Dopuszczający";
        Names[3] = "Dostateczny";
        Names[4] = "Dobry";
        Names[5] = "Bardzo Dobry";
        Names[6] = "Celujący";
    }
}

现在在我的视图中我有一个名为 Chartist 的javascript库来创建图表,我希望这些图表可以应用到这些图表中。

以下是我(想)将模型数据插入JS

的方法
                        var data = {
                            labels: [
                                @foreach (var Gr in Model.AllGradesNum)
                                {
                                    string.Join(Model.GradeList.Names.ElementAt(@Gr.Grade), ", ");
                                }
                            ],
                            series: [
                                @foreach (var Gr in Model.AllGradesNum)
                                {
                                    string.Join(Gr.Count.ToString(), "0, ");
                                }
                            ]
                        };

我们这样的配置问题根本没有输出值。 即使尝试打印正常div中的值也不会弹出任何内容。

控制台也报告没有错误,检查源显示两个空数组:

                var data = {
                    labels: [
                    ],
                    series: [
                    ]
                };

这可能是什么问题,我该如何解决?

**编辑:** 输出如下值:

  @foreach (var Gr in Model.AllGradesNum)
                        {
                            <p>@Gr.Count + @Gr.Grade</p>
                        }

无问题地工作并显示正确的数据

1 个答案:

答案 0 :(得分:1)

您的代码存在两个问题 1.您正在计算foreach中的表达式,但不将其打印到HTML。 2.连接语法不正确。 Join将第一个参数作为分隔符,第二个作为数组,你已经交换了它。 以下代码可能适合您

    var data = {
                            labels: [
                                @foreach (var Gr in Model.AllGradesNum)
                                {
                                    string t1 = string.Join(", ",Model.GradeList.Names.ElementAt(@Gr.Grade));
                                    @t1
                                }
                            ],
                            series: [
                                @foreach (var Gr in Model.AllGradesNum)
                                {
                                    string t2 = string.Join("0, ",Gr.Count.ToString());
                                    @t2
                                }
                            ]
                        };