我想要实现的
如果用户是3个角色的成员,我希望生成所有角色的3个DropDownLists以及要选择的每个用户角色。我不想使用ViewBag。
问题
目前,我可以生成包含所有角色的3个DropDownLists,但是没有选择用户所属的3个角色。如果用户是Admin、PowerUser和Manager角色的成员,则在所有3个DropDownLists中只选择最后一个角色Manager。
发问
如何使用正确选择的角色生成所需的DropDownLists?
维奥莫德尔
public class UserViewModel
{
public IEnumerable<SelectListItem> RolesList { get; set; }
public string RolesListId { get; set; }
}控制器
// Get list of roles that user is a member of
var userRoles = UserManager.GetRoles(user.Id);
var model = new UserViewModel()
{
RolesList = RoleManager.Roles.ToList().Select(r => new SelectListItem
{
Selected = userRoles.Contains(r.Name),
Text = r.Name,
Value = r.Name
}).OrderBy(r => r.Text),
};视图
@for (int i = 0; i < Model.RolesList.Where(x => x.Selected == true).Count(); i++)
{
@Html.DropDownListFor(model => model.RolesListId, Model.RolesList, "Select Role ...")
}发布于 2015-09-12 20:05:54
下面是您需要的代码,但是当用户可以有多个角色时,而不是使用DropDownList,最好使用CheckBoxes列表。
无论如何,下面是使用DropDownList 所需的代码
@foreach (var item in Model.RolesList.Where(x => x.Selected))
{
@Html.DropDownList("SelectedRole", new SelectList(Model.RolesList, "Value", "Text", item.Value), "Select a Role")
}如果您决定使用CheckBoxes,和下面的代码应该是
@foreach (var item in (SelectList)ViewBag.RoleId)
{
<input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline" />
@Html.Label(item.Value, new { @class = "control-label" })
}https://stackoverflow.com/questions/32542572
复制相似问题