我有两个表User和Roles
这是用户模型
public partial class User
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public User()
{
this.Roles = new HashSet<Role>();
}
[Key]
public int Id { get; set; }
public string Name { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Role> Roles { get; set; }
}
这里是角色模型
public partial class Role
{
[Key]
public int Id { get; set; }
public string RoleName { get; set; }
[ForeignKey("User")]
public Nullable<int> User_Id { get; set; }
public virtual User User { get; set; }
}
我需要在“查看用户名”和“他的角色名称”中显示
在控制器中我有这个方法
public ActionResult Index()
{
return View(db.Users.Include(x => x.Roles).ToList());
}
并在查看此
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
</tr>
}
我尝试显示RoleName,如
<td>
@Html.DisplayFor(modelItem => item.Roles.Name)
</td>
但它看不到RoleName
属性。
我如何解决这个问题?
答案 0 :(得分:0)
User类中有一组roles属性,这意味着一个用户可以拥有多个角色。如果您的目的是为一个用户提供多个角色,则可能需要包含另一个foreach循环,如下所示
如果您打算每个用户拥有一个角色,则可以使用以下代码
答案 1 :(得分:0)
根据您的模型,每个用户都有一组角色。 我们需要循环角色才能显示RoleName。
{{1}}
答案 2 :(得分:0)
在用户模型中,您已将角色声明为集合,这意味着列表。从您的代码中,您在每个用户中都有角色列表。 如果每个用户只有一个角色,则可以更改代码,如:
<td>
@Html.DisplayFor(modelItem => item.Roles.First().RoleName)
</td>
这将显示角色列表中的FirstRole名称。
或者你可以像用户一样循环角色