查询正在创建新的
SelectListGroup
为每个人
SelectListItem
,即使每个
选择列表组
具有相同的值。
修改查询以将数据分组,然后创建新的
选择列表组
每组
// Initialize model
var model = new ManifestFilterDropDownItem
{
States = new List<SelectListItem>
}
var states = data.GroupBy(x => x.AddrState); // group by state
foreach (var group in states)
{
// Create a SelectListGroup
var optionGroup = new SelectListGroup() { Name = group.Key };
// Add SelectListItem's
foreach (var item in group)
{
model.States.Add(new SelectListItem()
{
Value = item.AddrZip,
Text = item.AddrZip,
Group = optionGroup
})
}
}
return model;
或者,可以使用
SelectList
构造器
var model = new ManifestFilterDropDownItem
{
States = new SelectList(data, "AddrZip", "AddrZip", "AddrState", null, null)
};
return model;
作为旁注,不要使用
DropDownList()
创建
<select multiple>
是的。你需要使用
ListBoxFor()
以便双向模型绑定工作。参考
Why does the DropDownListFor lose the multiple selection after Submit but the ListBoxFor doesn't?