我想显示在我的索引视图中的角色列表,但似乎没有可能的方式来访问dbo.AspNetRoles ??如何从asp.net mvc中的IdentityUser获取视图中的角色名称?
作用的维持控制:
namespace DwBusService.Controllers
{
public class DwRoleMaintenanceController : Controller
{
// private readonly ApplicationDbContext _context;
private readonly RoleManager<IdentityRole> roleManager;
private readonly UserManager<ApplicationUser> userManager;
public DwRoleMaintenanceController(RoleManager<IdentityRole> roleManager, UserManager<ApplicationUser> userManager)
{
this.roleManager = roleManager;
this.userManager = userManager;
}
// GET: DwRoleMaintenance
public async Task<IActionResult> Index()
{
var roles = roleManager.Roles.OrderBy(a => a.Name);
return View(roles);
}
}
}
应用的用户模型
namespace DwBusService.Models
{
// Add profile data for application users by adding properties to the ApplicationUser class
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
}
[Display(Name = "Local Authentication")]
public bool LocalAuthentication { get; set; }
}
}
索引角色维护视图
@model IEnumerable<DwBusService.Models.ApplicationUser>
....
<table class="table">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.Roles)</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>@Html.DisplayFor(modelItem => item.Roles)</td>
<td>
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Id">Details</a>
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>
我无法从item.Roles
访问Roles.Name
或Roles.Id
。我试图在应用程序用户中创建一个virtual RoleNavigation
属性,我试图制作自己的IdentityRole.cs
模型,我尝试了很多东西。谁能帮我?当我运行这段代码如我得到这个错误:
InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable'1[Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable'1[DwBusService.Models.ApplicationUser]'.
DBO.ASPNETROLES.SQL
CREATE TABLE [dbo].[AspNetRoles] (
[Id] NVARCHAR (450) NOT NULL,
[ConcurrencyStamp] NVARCHAR (MAX) NULL,
[NormalizedName] NVARCHAR (256) NULL,
CONSTRAINT [PK_AspNetRoles] PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO
CREATE NONCLUSTERED INDEX [RoleNameIndex]
ON [dbo].[AspNetRoles]([NormalizedName] ASC);
谢谢你的帮助,但我根本不明白你如何与您的视图中使用这种结合? –