DropDownList对于不选择值的集合

时间:2011-03-28 12:03:43

标签: asp.net asp.net-mvc-3

我正在使用带有自定义视图模型的强类型视图。此视图模型包含一组书籍。

public IList<Books> Books { get; private set; }

我也将选择列表传递给视图。但是DropDownListFor助手类不会自动预选图书的默认值。

@Html.DropDownListFor(m => Model.Books[i].AuthorID, Model.Author as SelectList)

其他一切都有效,例如它会将所选值传递回控制器。

我通过在viewmodel中创建选择列表找到了一种解决方法:

@Html.DropDownListFor(m => Model.Books[i].AuthorID, new SelectList(Model.AuthorList, "Value", "Text", @Model.Books[i].AuthorID.ToString()))

但是,如果有一个更简单的解决方案,我不想实现此解决方法。有没有办法让视图可以处理集合中的值?

1 个答案:

答案 0 :(得分:0)

将作者列表作为模型的一部分传递给您的变通方法。您可以在控制器中生成选择列表,但不要求在视图中创建列表。类似的东西:

@Html.DropDownListFor(m => Model.Books[i].AuthorID, Model.AuthorList)

如果您在控制器中创建列表,这将有效:

var model = new ViewModel()
{
    AuthorList = new SelectList(Model.AuthorList, "Value", "Text"),
};

它将处理自己设置所选项目。

至于你的Model.Author as SelectList无效的原因,我猜测Model.Author不是作者姓名和ID的列表。它可能是一个域对象,使用as投射它会返回null。