Как администратор может изменить данные на SQL сервере в ASP. NET Core? - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь добавить контроллер для ApplicationUser.cs, чтобы, когда администратор вошел в систему, у них была возможность просматривать, редактировать, удалять любые записи из таблицы dbo.AspNetUsers, но я думаю, что делаю это неправильно.

 <form asp-controller="Admin" asp-action="ActiveUser" method="post">
            <input type="hidden" asp-for="@user.Email" />
            <button type="submit" class="btn btn-primary">Active</button>
        </form>

Контроллер администратора:

  [HttpGet]
    public IActionResult ActiveUser() { return View(); }


    [HttpPost]
    public async Task<ActionResult> ActiveUser(ApplicationUser Model)
    {
         var active =_userManager.Users.FirstOrDefault(p => p.Email == Model.Email);
        if (active != null)
        {
            active.IsActive = true;
            using (var transaction = _application.Database.BeginTransaction())
            {
                try
                {

                    await _application.SaveChangesAsync();
                    transaction.Commit();

                }
                catch (Exception ex)
                {
                    _ = (ex.Message);
                    transaction.Rollback();
                    return View("Er");
                }
            }
        }
        return View();
    }

, но я думаю, что кнопка «Отправить» связана с неправильным сообщением формы, потому что, когда я отлаживаю активное сообщение, оно равно нулю! и никаких изменений на моем SQL Сервере. Как управлять?

1 Ответ

1 голос
/ 07 мая 2020

Чтобы добавлять, удалять и изменять пользователей и роли в AspNetUsers, вы должны использовать службы UserManager и RoleManager. Не пытайтесь изменять сущности напрямую, используя DbContext.

. Поэтому для создания пользователя вызывайте метод UserManager.CreateAsync(). Чтобы сохранить изменения в вызове пользователя UserManager.UpdateAsync()

Пример. Чтобы найти пользователя по адресу электронной почты, измените свойство, а затем сохраните изменение:

var currentUser = await _userManager.FindByEmailAsync(email);
currentUser.IsActive = true;
await _userManager.UpdateAsync(currentUser);

То же самое относится к ролям, которые пользователи находятся в. Используйте службу RoleManager для добавления и удаления ролей.

if (!await roleManager.RoleExistsAsync(roleName))
{
    await roleManager.CreateAsync(new IdentityRole(roleName));
}
await userManager.AddToRoleAsync(currentUser, roleName);

Документы Microsoft с некоторыми примерами обновления пользователей и ролей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...