【发布时间】:2020-01-26 04:43:46
【问题描述】:
我正在尝试在我的视图中创建一个动态表,该表将根据我发送到视图的模型类型动态生成。所以,我基本上有两个动作:
public IActionResult People()
{
List<Person> lst = new List<Person>();
// Add data...
return View("Table", lst);
}
public IActionResult Teams()
{
List<Team> lst = new List<Team>();
// Add data...
return View("Table", lst);
}
现在我想要显示人员/团队列表的相同视图,这样我就不必复制它了。我的 Table.cshtml 看起来像这样:
@model List<dynamic>
<table>
<tr>
@foreach (var item in Model.ElementAt(0).GetType().GetProperties())
{
<td>
@item.Name
</td>
}
</tr>
@foreach (var item in Model)
{
<tr>
// foreach (var propValue in item.GetProperties())
// Get value for each property in the `item`
</tr>
}
</table>
我的基本输出是一个 HTML 表格,如下所示:
Id, PersonName, Age
1, John, 24
2, Mike, 32
3, Rick, 27
我遇到的问题是动态获取模型类实例中每个属性的值。我不知道如何从项目中获取价值(没有 item.Property(someName).GetValue() 这样的东西)。这样我就可以发送一个列表(T 可以是人、团队、学生,任何东西),结果我会得到一个<table>,其中包含人/团队/学生属性(例如 ID、姓名、年龄)和每个人的值另一个<tr>中的属性。
【问题讨论】:
-
你能显示列名吗?
标签: c# asp.net-mvc asp.net-core model-view-controller view