我正在尝试MultiSelectList
在我的视图中创建一个,但是在 PartialView 的这一行上抛出了一个异常:
@Html.ListBoxFor(x => x.RegisterModel.SelectedRoles, Model.RegisterModel.Roles)
没有具有键“RegisterModel.SelectedRoles”的“IEnumerable”类型的 ViewData 项。
我希望MultiSelectList
成为所有角色的列表,但我不太确定我做错了什么。我最初制作RegisterModel.SelectedRoles
了一个string[]
,因为当将用户添加到角色时,astring[]
应该作为System.Web.Security.Roles.AddUserToRoles()
.
模型
public class DynamicActionUserModel {
public string Action { get; set; }
public RegisterModel RegisterModel { get; set; }
}
public class RegisterModel {
public string[] SelectedRoles { get; set; }
public MultiSelectList Roles { get; set; }
}
控制器
[HttpGet]
public ActionResult CreateUser() {
DynamicActionUserModel model = new DynamicActionUserModel {
Action = "CreateUser",
RegisterModel = new RegisterModel {
Roles = new MultiSelectList(System.Web.Security.Roles.GetAllRoles().OrderBy(r => r))
}
};
return PartialView("_UserPartial", model);
}
看法
<div>
@Html.Partial("_UserPartial", new DynamicActionUserModel{ Action = "CreateUser", RegisterModel = new RegisterModel()})
</div>
部分视图
@Html.LabelFor(x => x.RegisterModel.Roles)
@Html.ListBoxFor(x => x.RegisterModel.SelectedRoles, Model.RegisterModel.Roles)