Есть ли способ исправить добавление ролей пользователей в ASP.NET Identity MVC5? Не могу добавить роли

avatar
Summer Winter
9 августа 2021 в 01:06
119
1
-1

В последнее время я следил за учебным пособием и нахожусь на этапе добавления новой роли для пользователей.

Я хочу добавить новую роль, но проблема в том, что после отправки или добавления роли ничего не происходит. Просто обновите страницу и все.

Моей целью здесь является просто добавить новую роль и сохранить ее в базе данных.

Контроллер: RoleManagerController

        [HttpPost]
        [AllowAnonymous]
        public async Task<IActionResult> AddRole(string roleName)
        {
            if (roleName != null)
            {
                await _roleManager.CreateAsync(new IdentityRole(roleName));
            }
            return View();
        }

Представление: RoleManager/Index.cshtml

@model List<Microsoft.AspNetCore.Identity.IdentityRole>
@{
     ViewBag.Title = "Role Manager";
     Layout = "~/Views/Shared/_Layout.cshtml";

}
<h1>Role Manager</h1>
<form method="post" asp-action="AddRole" asp-controller="RoleManager">
    <div class="input-group">
        <input name="roleName" class="form-control w-25">
        <span class="input-group-btn">
            <button class="btn btn-info">Add New Role</button>
        </span>
    </div>
</form>

Данные: ApplicationDBContext.cs

   public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
             : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            builder.HasDefaultSchema("Identity");
            builder.Entity<IdentityUser>(entity =>
            {
                entity.ToTable(name: "User");
            });
            builder.Entity<IdentityRole>(entity =>
            {
                entity.ToTable(name: "Role");
            });
            builder.Entity<IdentityUserRole<string>>(entity =>
            {
                entity.ToTable("UserRoles");
            });
            builder.Entity<IdentityUserClaim<string>>(entity =>
            {
                entity.ToTable("UserClaims");
            });
            builder.Entity<IdentityUserLogin<string>>(entity =>
            {
                entity.ToTable("UserLogins");
            });
            builder.Entity<IdentityRoleClaim<string>>(entity =>
            {
                entity.ToTable("RoleClaims");
            });
            builder.Entity<IdentityUserToken<string>>(entity =>
            {
                entity.ToTable("UserTokens");
            });
        }

    }
Источник
Chinmay T
9 августа 2021 в 04:39
0

Обратитесь к этой ссылке, которая может быть полезна yogihosting.com/aspnet-core-identity-roles

Ответы (1)

avatar
Aashima Khatoon
9 августа 2021 в 14:30
1

Вместо того, чтобы передавать роль конструктору, передайте ее как свойство класса IdentityRole.

    IdentityResult result = await roleManager.CreateAsync( new IdentityRole
                {
                    Name = roleName
                };
);