1

ビューでを作成しようとして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)
4

1 に答える 1