最終解決方案:的SelectList選定值
public class UpdateUser
{
public IEnumerable<string> SelectedRoles { get; set; }
public IEnumerable<SelectListItem> DropDownRoles { get; set; }
}
...
var roles = context.Roles.Select(x => x.RoleName).ToList();
UpdateUser userToUpdate = new UpdateUser
{
SelectedRoles = user.Roles.Select(x => x.RoleName),
DropDownRoles = new SelectList(roles, user.Roles)
};
HTML
@Html.ListBoxFor(x => x.SelectedRoles, Model.DropDownRoles)
============ =============
我有一個droplist顯示,像這樣的用戶角色:
HTML
@Html.TextBoxFor(x => x.Roles)
@Html.DropDownList("roles", ViewData["roles"] as SelectList)
控制器
var user = context.Users.Include(x => x.Roles).Where(x => x.UserId == id).FirstOrDefault();
ViewData["roles"] = new SelectList(context.Roles, "RoleId", "RoleName");
的問題是,我不明白我怎麼能設置在下拉菜單中選擇的值。我想也許我可以使用Lambda Expression將匹配的角色放在列表頂部,然後按字母順序放置。
var roles = context.Roles
.ToList()
.OrderBy(? matching role then other selectable roles ?)
必須是一個更簡單的方法?
怎麼樣,如果用戶擁有比1起的作用嗎? 'public IEnumerable SelectedRole {get;組; }所以,對於每個用戶角色,我們都有一個新的下拉列表。 –
user1883004
2013-02-19 09:58:32
準確地說:'public IEnumerable SelectedRoles {get;組; }'。然後在視圖中使用'Html.ListBoxFor(x => x.SelectedRoles,Model.Roles)'而不是'Html.DropDownListFor(x => x.SelectedRole,Model.Roles)'來允許多選。 –
2013-02-19 09:59:47
感謝您的幫助,幾乎在那裏,我只需要設置所選的值, 讓我編輯OP。 – user1883004 2013-02-19 10:13:56