当使用IDictionary <string,ienumerable <selectlistitem =“”>&gt; </string,>时,编辑时MVC设置选定值

时间:2011-09-02 00:30:45

标签: asp.net-mvc drop-down-menu

嗨,我的观点中有一句话:

@Html.DropDownListFor(modelItem => item.CheckerId, Model.StaffByArea as IDictionary<string, IEnumerable<SelectListItem>>, "--- Select ---")

下拉列表显示效果很好。

但是,编辑下拉列表时没有显示与CheckerId匹配的选定值。

我从其他示例中看到如何通过在视图中实际创建选择列表来设置所选值,如:

@Html.DropDownListFor(modelItem => item.CheckerId, new SelectList(Model.StaffList, "Id", "Username", item.CheckerId))

然而,我在这里使用IDictionary非常重要,因为我正在尝试使用optgroup设置创建一个选择列表。

所以任何人都可以帮助我如何设置IDictionary下拉列表的选定值。

修改更新:

根据要求,这是按地区划分的工作人员类型

StaffByArea = new Dictionary<string, IEnumerable<SelectListItem>>()

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了一个解决方案,我在创建词典时填充它

@Html.DropDownListFor(modelItem => item.CheckerId, Model.Areas.ToDictionary(s => s.Name, s => s.Users.Where(c => c.AreaId == s.Id).Select(c => new SelectListItem { Value = c.AreaId.ToString(), Text = c.Username, Selected = item.CheckerId == c.AreaId })))