I am trying to display a list of Roles in my index view but there seems to be no possible way to access dbo.AspNetRoles??
ROLE MAINTENANCE CONTROLLER:
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);
}
}
}
APPLICATION USER MODEL
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; }
}
}
INDEX ROLE MAINTENANCE VIEW
@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>
I cannot access Roles.Name
or Roles.Id
from item.Roles
. I have tried to create a virtual RoleNavigation
property in Application user, I have tried to make my own IdentityRole.cs
model, I have tried many things. Can anyone help me? When I run this code as is I get this error:
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);