我試圖在我的視圖中創建MultiSelectList
,但在PartialView中的此行上拋出異常:沒有類型爲'IEnumerable <SelectListItem>'的ViewData項具有鍵'RegisterModel.SelectedRoles'
@Html.ListBoxFor(x => x.RegisterModel.SelectedRoles, Model.RegisterModel.Roles)
有型 '的IEnumerable' 具有關鍵 'RegisterModel.SelectedRoles' 沒有ViewData的項目。
我想MultiSelectList
是一個所有角色的列表,但我不太確定我做錯了什麼。我最初製作RegisterModel.SelectedRoles
a string[]
,因爲當向角色添加用戶時,string[]
預計作爲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>
霸rtialView
@Html.LabelFor(x => x.RegisterModel.Roles)
@Html.ListBoxFor(x => x.RegisterModel.SelectedRoles, Model.RegisterModel.Roles)
在控制器中,你會初始化成員'Roles' ..但是在視圖中,你只是傳遞了一個新的'RegisterModel'實例而沒有初始化'Roles'列表。 –
會如果我沒有在視圖中傳遞RegisterModel的新實例,控制器會被擊中?換句話說,是否有可能擊中控制器? – bflemi3