我正在尝试将所有角色从我的数据库中添加到选择列表中。 这是我的控制器:
[AllowAnonymous]
public ActionResult Register()
{
ViewBag.Roles = new SelectList(Roles.GetAllRoles(), "ROLEID", "ROLENAME");
return View();
}
我的模特:
public List<SelectListItem> SelectedRoles { set; get; }
这是我的观点:
<div class="input-group">
<label for="Centre">Roles(s)</label>
@Html.ListBoxFor(m=>m.SelectedRoles, (ViewBag.Roles as SelectList), new { @class = "chosen-select", data_placeholder = "Agent(s)." })
@Html.ValidationMessageFor(m=>m.SelectedRoles)
</div>
但是我收到了这个错误:
没有“IEnumerable”类型的ViewData项具有“SelectedRoles”键。
有什么问题?
答案 0 :(得分:1)
确定。我忘记了一件事,将ListBoxFor替换为ListBox,如下所示:
ViewBag.ListRoles = new SelectList(Roles.GetAllRoles(), "Id", "Name");
@Html.ListBox("SelectedRoles", (SelectList)ViewBag.ListRoles)
确保名称与ViewBag不相似
修改强>
这不是更好的方式,但我认为有效。放入内部视图:
<select>
@foreach (var item in Roles.GetAllRoles())
{
<option value="@item">@item</option>
}
</select>
答案 1 :(得分:1)
@Html.ListBoxFor(m=>m.SelectedRoles, (ViewBag.Roles as SelectList), new { @class = "chosen-select", data_placeholder = "Agent(s)." })
将上一行更改为
@Html.ListBoxFor(m=>m.ROLEID, (ViewBag.Roles as SelectList), new { @class = "chosen-select", data_placeholder = "Agent(s)." })
答案 2 :(得分:0)
我解决了这样的问题:
在控制器中:
ViewBag.AllRoles = new SelectList(Roles.GetAllRoles(), "roleName");
并在我的视图中:
@Html.ListBoxFor(m=>m.SelectedRoles, (ViewBag.AllRoles as SelectList), new { @class = "chosen-select", data_placeholder = "Agent(s)." })
此链接非常有用{{3p>