Предварительно выбрать свойства объекта с помощью лямбда-выражений, а затем отобразить в MVC? - PullRequest
0 голосов
/ 18 июля 2011

В настоящее время в 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>

Я должен признать, что у меня очень слабое понимание выражений, и до сих пор мне не удавалось искать информацию. У кого-нибудь есть идеи, возможно ли это сделать?

1 Ответ

0 голосов
/ 28 июля 2011

Похоже, что html-помощники не работают так (передавая выражение как переменную).Компилятору явно требуется выражение, чтобы можно было определить, какие типы TModel и TResult могут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...