ビューでを作成しようとしてMultiSelectList
いますが、PartialViewのこの行で例外がスローされています。
@Html.ListBoxFor(x => x.RegisterModel.SelectedRoles, Model.RegisterModel.Roles)
キー「RegisterModel.SelectedRoles」を持つタイプ「IEnumerable」のViewDataアイテムはありません。
すべての役割のリストにしたいのMultiSelectList
ですが、何が間違っているのかよくわかりません。私が最初に作成RegisterModel.SelectedRoles
したのはstring[]
、ユーザーをロールに追加するときにstring[]
、の引数としてaが期待されるため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>
PartialView
@Html.LabelFor(x => x.RegisterModel.Roles)
@Html.ListBoxFor(x => x.RegisterModel.SelectedRoles, Model.RegisterModel.Roles)