为什么我得到一个错误,说没有's视图数据为我的下拉列表
本文关键字:视图 下拉列表 我的 数据 错误 一个 为什么 | 更新日期: 2023-09-27 18:05:25
我的模型链接了数据库中的2个表,所以我需要允许我的用户在主表中创建新记录时选择从表中的项。
我要链接的表是Roles
和Users
对于用户角色,当您创建一个新的用户记录时,您将从下拉列表中选择一个角色。用户模型看起来像这样:
public int Id { get; set; }
public int RoleId { get; set; }
public Role Role { get; set; }
public string Username { get; set; }
...
在表单中,您将从下拉列表中选择一个角色,该下拉列表将为您提供RoleId的值,然后可以使用该值从数据库中选择角色:
@Html.DropDownList("RoleId", "Please select a user role.")
我有这个问题(虽然我已经得到了这个工作在另一个项目,我已经复制了代码)是显然没有视图数据的<select>
元素。
实际错误文本如下:
类型为'System '的异常。InvalidOperationException'在System.Web.Mvc.dll中发生,但未在用户代码中处理
附加信息:没有'IEnumerable'类型的ViewData项具有'RoleId'键。
你知道我哪里做错了吗?
您正在为.DropDownList
使用无效的过载。不存在只接受两个字符串的签名。你必须指定在生成选择列表时要使用的值。
使用占用IEnumerable<SelectListItem>
的过载。例如:
@Html.DropDownList("RoleId", Model.ListOfRoles, "Please select a user role.")
如果你要创建一个新的列表,你可以使用ViewBag:
// SelectList(List<Role>, "Data Value Field", "Data Text Field");
ViewBag.RoleId = new SelectList(db.Roles, "RoleId", "RoleName");
@Html.DropDownList("RoleId", "Please select a role for this user")