ListBoxFor在asp.net mvc中进行单一选择

时间:2014-03-30 21:23:35

标签: jquery asp.net-mvc razor

我正在使用最新的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');
});

2 个答案:

答案 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个可见项目的“列表框”。