C# asp.net mvc活页夹不更新“编辑”视图中的RoleId值

C# asp.net mvc活页夹不更新“编辑”视图中的RoleId值,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有一个这样的扩展用户类: public class User : IdentityUser { public string Nombre { get; set; } public string Apellidos { get; set; } public int DepartamentoID { get; set; } public Departamento Departamento { get; set; } } <select class="form-control

我有一个这样的扩展用户类:

public class User : IdentityUser
{
  public string Nombre { get; set; }
  public string Apellidos { get; set; }
  public int DepartamentoID { get; set; }
  public Departamento Departamento { get; set; }
}
<select class="form-control" id="RoleId" name="RoleId">
    <option value="1">Role_1</option>
    <option value="2">Role_2</option>
</select>
在编辑视图中,我有以下字段定义:

<div class="form-group">
   @Html.LabelFor(model => model.Roles.FirstOrDefault().RoleId, htmlAttributes: new { @class = "control-label col-md-2" })
   <div class="col-md-10">
      @Html.DropDownListFor(m => m.Roles.ElementAtOrDefault(0).RoleId, (SelectList)ViewBag.RoleList, "Seleccionar un rol", new { @class = "form-control" })
      @Html.ValidationMessageFor(model => model.Roles.FirstOrDefault().RoleId)
   </div>
</div>

@LabelFor(model=>model.Roles.FirstOrDefault().RoleId,htmlAttributes:new{@class=“control label col-md-2”})
@Html.DropDownListFor(m=>m.Roles.elementatorderefault(0).RoleId,(SelectList)ViewBag.RoleList,“selecciator un rol”,new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Roles.FirstOrDefault().RoleId)
发送表单时,角色集合为空

为什么活页夹不将角色添加到角色集合

问候和感谢

我试图添加更多信息来回应拉杰什的评论

在Get操作中,模型包含角色的信息,并且视图正确地显示了该信息。下拉列表显示可用的角色,用户的角色显示为选中。当我在视图中选择另一个不同的角色并发送表单时,在Post操作中,模型的角色集合不再包含信息

我不知道如何调试活页夹的工作

为什么活页夹不将角色添加到角色集合

这是因为
@Html.DropDownListFor
和默认模型绑定器不够智能。您的
@Html.DropDownListFor
生成如下内容:

public class User : IdentityUser
{
  public string Nombre { get; set; }
  public string Apellidos { get; set; }
  public int DepartamentoID { get; set; }
  public Departamento Departamento { get; set; }
}
<select class="form-control" id="RoleId" name="RoleId">
    <option value="1">Role_1</option>
    <option value="2">Role_2</option>
</select>
然后您的模型必须具有
公共列表SelectedRoles{get;set;}
属性


另一个选项是使用接口创建自定义模型绑定器。此选项为您提供了将请求数据映射到模型的无限功能。

调试并检查角色为何为空,是否在Get请求中获取模型?如果有,请检查它是否正确绑定。更多信息,我们只能在您添加的代码中看到用户模型,其他代码(如角色和所有代码)在哪里,请添加它们以便于检查。您不能使用单独的ViewModel而不是POCO实体类吗?当然可以。我可以使用ViewModel。但我的问题是,为什么活页夹不自动填充信息?