参考asp.net MVC教程: http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/examining-the-edit-methods-and-edit-view
关于自动生成的Views \ Movies \ SearchIndex.cshtml
问题1:
<p>
@Html.ActionLink("Create New", "Create")
@using (Html.BeginForm())
{
<p>
Genre: @Html.DropDownList("movieGenre", "All")
Title: @Html.TextBox("SearchString", "Movies", FormMethod.Get)
<input type="submit" value="Filter" />
</p>
}
</p>
movieGenre 如何引用 @ ViewBag.movieGenre ,这显然是在Controllers / MoviesController.cs中定义的
问题2:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.ReleaseDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Genre)
</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>
}
modelItem 在哪里定义? VS2010向我展示了modelItem是
IEnumerable <MvcMovie.Model.Movie>
感谢。
答案 0 :(得分:1)
看起来你已经回答了第二个问题,所以我只回答你的第一个问题:
如果没有提供数据,Html.DropDownList
帮助器默认会将自身绑定到ViewData
。 ViewBag
只是ViewData
词典的动态包装器,因此当您设置ViewBag.movieGenre = new SelectList()
时,您实际上是在设置ViewData["movieGenre"] = new SelectList()
。
现在您的SelectList
中有ViewData
,以下内容会自动将其绑定到下拉列表中:
@Html.DropDownList("movieGenre")
这种隐式绑定没有很好的记录。有关更多信息,请参见此处: