Asp.net mvc Asp.Net MVC 5具有键';用户ID';类型为';System.String';但必须为'型;IEnumerable<;选择列表项>';

Asp.net mvc Asp.Net MVC 5具有键';用户ID';类型为';System.String';但必须为'型;IEnumerable<;选择列表项>';,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我试图在下拉列表中列出用户,这是我的控制器: var user = db.Users.Where(e => e.Roles.All(r => r.RoleId != "1")) .OrderBy(e => e.UserName); ViewBag.UserId = new SelectList(user,"Id", "UserName"); return View(); 我的看法是: @Html.DropDownList("UserId", n

我试图在下拉列表中列出用户,这是我的控制器:

    var user = db.Users.Where(e => e.Roles.All(r => r.RoleId != "1"))
    .OrderBy(e => e.UserName);
    ViewBag.UserId = new SelectList(user,"Id", "UserName");
    return View();
我的看法是:

@Html.DropDownList("UserId", null, htmlAttributes: new { @class = "form-control" })

我可以在下拉列表上显示用户,但当我尝试发布某些内容时,ModelState无效,并且会出现错误。

您的
视图包中的
选择列表
不能与正在编辑的属性命名相同。将其更改为类似于
ViewBag.UserIdChoices
,您就不会有问题了。

您可以在处理post的操作方法中发布代码吗。通常,您会创建一个可枚举对象来包含键、值存储,然后将其绑定到Razor助手。看一看这个通用示例,它是一个很好的解决方案,可以解决您试图实现的问题。我更新了我的问题,一些绑定问题导致了该错误,我修复了它,但现在我遇到了另一个问题。永远不要“删除”问题的文本,并用堆栈溢出上的其他文本替换它。我们在这里提供问题的历史记录。如果你有新问题,问一个新问题。如果您解决了问题,请在下面发布您的答案,并将其标记为帮助其他可能有类似问题的用户的答案。