如何在循环中增加对象属性名称

时间:2017-06-12 08:45:33

标签: c# asp.net-mvc razor

在我的对象列表中,我几乎没有相似的属性。

week1 week2 译员更加 week4 week5 ...

我希望能够根据用户选择的周数在表格中显示它们。

我的想法是使用如下所示的循环,但我不能将“i”添加到@ data.week#number

  @for (var i = 0; i < Model.numberOfWeeks; i++)
                        {
                      <td>@data.week@i.name</td>
                        }

有没有办法可以使用“i”的增量将其添加到对象名称?

2 个答案:

答案 0 :(得分:2)

您不能使用变量来构造变量名称。名称必须保持静态。如果你真的需要反思,但这不是最好的选择。

改为使用字典或列表,以便require.js起作用。

答案 1 :(得分:1)

为什么你有属性值?无论如何,如果你真的需要迭代属性并输出它们的值,你可以尝试使用反射:

 <td>@(data.GetType().GetProperty("week" + i).GetValue(data, null))</td>

但这是一种不好的做法。我强烈建议您更改数据对象和视图模型。