我正在使用最新的MVC5。 我想使用ListBox而不是DropDown。决定使用哪个控件不是单个/多个选择决定。
这就是我得到的错误:
An exception of type 'System.InvalidOperationException' occurred in System.Web.Mvc.dll but was not handled in user code
Additional information: The parameter 'expression' must evaluate to an IEnumerable when multiple selection is allowed.
@using (Html.BeginForm())
{
// @Html.ValidationMessageFor(model => model.)
@Html.ListBoxFor(x => x.SelectedCompanyId, new SelectList(Model.Companies, "CompanyId", "Address"), new { @id = "CompanyListBox" })
}
但是如何删除多个选择? jQuery在这里没有帮助,因为在文档准备好之前首先引发了剃刀异常:
$(document).ready(function () {
debugger;
$("#CompanyListBox").removeAttr('multiple');
});
答案 0 :(得分:2)
您只能将ListBoxFor
帮助程序与IEnumerable<T>
属性一起使用。在您的示例中,如果SelectedCompanyId
不是IEnumerable<T>
,则根本不起作用。 ListBoxFor
帮助程序旨在用于多个选择。此外,如果您使用javascript删除multiple="multiple"
属性,则与使用DropDownListFor
帮助程序时相同。
答案 1 :(得分:2)
一种方法是使用DropDownListFor并将“size”属性设置为您想要的可见项目数。
例如
@Html.DropdownListFor(x => x.SelectedCompanyId, new SelectList(Model.Companies, "CompanyId", "Address"), new { @id = "CompanyListBox", @size=10 })
将显示包含10个可见项目的“列表框”。