Привет, я создал View, используя шаблон Visual Studio, который должен отображать список объектов. Вот сгенерированный синтаксис Visual Studio:Понимание списка объектов на основе Синтаксис представления ASP.NET MVC
@model IEnumerable<TestMVCApplication.Models.Product>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.name)
</th>
<th>
@Html.DisplayNameFor(model => model.available)
</th>
<th>
@Html.DisplayNameFor(model => model.price)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.available)
</td>
<td>
@Html.DisplayFor(modelItem => item.price)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
Я смущен примерно выше синтаксис. В частности:
1) Первый раз, когда мы видим это выше:
@Html.DisplayNameFor(model => model.name)
Я знаю, что для обозначения модели, мы должны использовать Model
(с буквой М). Почему он используется с небольшим m
? Что делает model
(с малым м) означает выше? Как IDE знает, что существует model.name
(с небольшим m).
Если Model.Name
будет использоваться это означало бы, что IEnumerable
имеет свойство Name
(верно?), Но это не так, не так ли? Объяснение для чайников оценено. Так что же действительно model
(с малым м)?
2) Наконец это:
@Html.DisplayFor(modelItem => item.name)
также сбивает с толку. что такое modelItem
- он не был объявлен нигде? Откуда это появилось? Как это работает? не логичнее было бы item=> item.name
?
Модель и modelItem, используемые здесь, являются только именем параметра для ваших лямбда-функций. Вы даже можете назвать его так или иначе, как m или mitem. Просто найдите некоторую информацию о лямбда-выражениях в google. – Thangadurai
@Thangadurai: Если я могу что-то написать, как он здесь знает: 'model => model.available', что' model.available' - свойство существует ?? Твое объяснение действительно слишком мало, я делал фундаментальные исследования, прежде чем спрашивать. –
Отправьте свой модельный объект здесь. Для вашей информации метод расширения DisplayNameFor на самом деле ожидает IEnumerable. Вам действительно нужно немного поработать над Google Data Annotations, расширениями методов и проверить синтаксис этих HTML-помощников в MSDN. – Thangadurai