インデックスビューにロールリストを表示しようとしていますが、dbo.AspNetRolesにアクセスする方法がないようですね??asp.net mvcのIdentityUserからビューのロールの名前を取得するには?
ROLEメンテナンス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);
}
}
}
アプリケーションユーザモデル
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; }
}
}
インデックスの役割メンテナンス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>
私は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);
はあなたの助けをありがとう、私は単にあなたがあなたのビューと一緒にこれを使用する方法を理解していませんか? –