【问题标题】:Razor Syntax: Output string array in specific indexRazor 语法:在特定索引中输出字符串数组
【发布时间】:2017-01-19 17:21:33
【问题描述】:

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

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

伴随着一组主题名称:

公共类 GradeListModel { 公共字符串[] 名称 = 新字符串[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, ");
                                }
                            ]
                        };

我们这种配置的问题根本没有输出任何价值。 即使尝试打印普通 d​​iv 中的值也不会弹出任何内容。

控制台也没有报错,查看源码显示两个空数组:

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

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

**编辑:** 像这样输出值:

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

正常工作并显示正确的数据

【问题讨论】:

    标签: javascript arrays asp.net-mvc razor


    【解决方案1】:

    您的代码有两个问题 1.您正在计算 foreach 中的表达式,但没有将其打印到 HTML。 2. join 语法不正确。 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
                                    }
                                ]
                            };
    

    【讨论】:

    • 是的,它有效!还有一件小事。我应该如何输出要显示在双引号中的字符串?
    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多