我有一个模型,其中包含对象列表,所有对象都应具有可编辑的下拉列表。例如,考虑具有以下定义的图书库:
class Category
{
int id;
int name;
}
class Book
{
int id;
string name;
int categoryId;
}
class Library
{
List <Book> books;
}
因此,图书馆有一个图书清单,每本书都有一个类别。在用户界面中,类别是从下拉列表中选择的,因此每本书有一个下拉列表。所有书籍的类别列表相同。我该如何使用剃刀刀视图进行这项工作?当尝试使用html helper将下拉列表绑定到书籍列表中的特定索引时,index变量使用它的最后一个值,因此所有下拉列表都绑定到同一本书。另外,如何处理添加/删除书籍?
视图的简化版:
@for (int i = 0; i < Model.Books.Count; ++i)
{
<tr>
<td>
@Html.DropDownListFor(model => model.Books[i].CategoryId, (IEnumerable<SelectListItem>)ViewBag.Categories)
</td>
</tr>
}
编辑:问题似乎是下拉列表没有获得初始值。如果我更改它们并保存列表,则正确的值将发送回后端。知道是什么原因吗?
答案 0 :(得分:0)
找到了一个解决方案,尽管不是很优雅。我正在为每本书创建一个新的下拉菜单,并在这些下拉菜单中设置所选的值:
DropDownListFor(model => model.Books[i].CategoryId, ((IEnumerable<SelectListItem>)ViewBag.Categories).Select(x => new SelectListItem(){Value = x.Value, Text = x.Text, Selected = Model.Books[i].CategoryId.ToString() == x.Value}))