Данные аннотации MVC и шаблоны - PullRequest
2 голосов
/ 21 июля 2011

В этом коде скаффолда MVC я понимаю, что используется шаблон, и я могу определить свои собственные шаблоны.Кроме того, учитываются аннотации данных об объекте, отправляемом в представление.

Но что такое modelItem?

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ReferenceNum)
        </td>

Ответы [ 3 ]

2 голосов
/ 07 февраля 2012

modelitem является фоновой переменной unuse.

DisplayFor ожидает метод, который получает один параметр.Реализация этого метода фактически является правой стороной лямбда-выражения: item.[SOMETHING].Просто так получается, что item.[SOMETHING] полностью игнорирует modelitem.Замена modelitem на item, конечно, приведет к ошибке компиляции, поскольку item принадлежит Model, и это не тот объект, который был создан при вызове анонимного метода { item.[SOMETHING] }.

Именно поэтому modelitem может быть практически любым именем, которое еще не существует в таблице символов (т. Е. Для этого компилятора еще нет определения).

1 голос
/ 21 июля 2011

Short awnser состоит в том, что Model и аргумент modelitem для лямбды, отправляемой в DisplayFor, являются одним и тем же объектом.

Html в этом случае является свойством типа HtmlHelper на просмотр класса.В данном случае T - это тип состояния вашего представления, которое вы передали представлению.

Представление предоставляет ваше представление в его свойстве Model, как вы заметили.Свойство Html также было создано с помощью HtmlHelper с тем же значением, поэтому при использовании свойства Html оно фактически снова передает то же значение в предоставляемую вами лямбду.

Название modelItem здесь - это просто имя для вашей лямбды, это может быть что угодно.

1 голос
/ 21 июля 2011

В вашем примере параметр для Html.DisplayFor является лямбда-выражением: если задан modelItem, вы ссылаетесь на свойство modelItem.ReferenceNum.ModelItem относится к тому же типу, что и Model.

Примечание: он должен читать modelItem => modelItem.ReferenceNum.Или иначе: item => item.ReferenceNum.

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