Я пытаюсь создать динамическую таблицу в моем представлении, которая будет генерироваться динамически в зависимости от типа модели, которую я отправляю в представление.Итак, в основном у меня есть два действия:
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 может быть Person, Team, Student, что угодно), и в результате я получил бы <table>
со свойствами Person / Team / Student (например, Id, Name, Age) и значениями каждого изсвойства в другом <tr>
.