如何使用MVC 5在IdentityUser列表上显示自定义属性?

时间:2017-06-26 23:02:39

标签: c# asp.net asp.net-mvc razor

我正在尝试在用户索引上显示自定义用户属性的内容。

我添加了已存在于数据库中的employee_idname,我节省了用户创建。

问题是当列出用户时我无法访问这些属性。

我已经关注ApplicationUser班级:

public class ApplicationUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }

    public string employee_id { get; set; }
    public string name { get; set; }

}

这是控制器:

    private IdentityDbContext identityDb = new IdentityDbContext();

    //GET: /Account/Index
    [Authorize(Roles = "Admin")]
    public ActionResult Index()
    {
        var users = identityDb.Users.Include(u => u.Roles).ToList();
        return View(users);
    }

这是视图:

@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            Email
        </th>
        <th>
            Employee Id
        </th>        
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Email)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.employee_id)
        </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>
}

</table>

电子邮件按预期显示,但在添加employee_id时,它在Visual Studio上被标记为不存在。

如何使自定义属性可访问,以便我可以在索引上列出它们?

1 个答案:

答案 0 :(得分:1)

改变这个:

@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>

对此:

@model IEnumerable<YourNamespace.ApplicationUser>