В настоящее время в MVC мы должны определять столбцы вручную всякий раз, когда мы хотим перечислить элементы:
<tr>
<td>
@Model.Name
</td>
<td>
@Model.Age
</td>
<td>
@Model.Gender
</td>
</tr>
Однако я хочу иметь ViewModel, где мы указываем, какие столбцы следует использовать, что-то вроде:
var model = new PersonViewModel(
// List of persons
CollectionOfPersons,
// List of columns that we want to display
new Expression<Func<Person, object>>[]
{
x => x.Name,
x => x.Age,
x => x.Gender
});
Тогда, на наш взгляд, все, что мне нужно сделать, это:
<tr>
// Model.Predicates is our ViewModel's selected columns
@foreach(var predicate in Model.Predicates)
{
<td>
// This would basically loop each pre-defined lambda expression in our ViewModel
@Html.DisplayFor(predicate)
</td>
}
</tr>
Я должен признать, что у меня очень слабое понимание выражений, и до сих пор мне не удавалось искать информацию. У кого-нибудь есть идеи, возможно ли это сделать?