Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
Редактирование и удаление пользователей в ASP.NET Identity представляется довольно простой задачей благодаря классу UserManager. Так, возьмем проект из прошлой темы, где у нас уже есть механизм регистрации и логина пользователей. Добавим в контроллер AccountController следующие методы:
[HttpGet] public ActionResult Delete() { return View(); } [HttpPost] [ActionName("Delete")] public async Task<ActionResult> DeleteConfirmed() { ApplicationUser user = await UserManager.FindByEmailAsync(User.Identity.Name); if (user != null) { IdentityResult result = await UserManager.DeleteAsync(user); if (result.Succeeded) { return RedirectToAction("Logout", "Account"); } } return RedirectToAction("Index", "Home"); } public async Task<ActionResult> Edit() { ApplicationUser user = await UserManager.FindByEmailAsync(User.Identity.Name); if (user != null) { EditModel model = new EditModel { Year = user.Year }; return View(model); } return RedirectToAction("Login", "Account"); } [HttpPost] public async Task<ActionResult> Edit(EditModel model) { ApplicationUser user = await UserManager.FindByEmailAsync(User.Identity.Name); if (user != null) { user.Year = model.Year; IdentityResult result = await UserManager.UpdateAsync(user); if (result.Succeeded) { return RedirectToAction("Index", "Home"); } else { ModelState.AddModelError("", "Что-то пошло не так"); } } else { ModelState.AddModelError("", "Пользователь не найден"); } return View(model); }
Методы Delete и DeleteConfirmed отображают пользователю представление для удаления и принимают выбор пользователя об удалении. Для удаления используется
метод UserManager.DeleteAsync()
. Он возвращает объект IdentityResult, который позволяет отследить успех операции.
Метод Edit также отображает представление для редактирования, передавая в него модель EditModel, которую мы далее создадим. В данном случае мы редактируем только
значение свойства Year. POST-версия метода
принимает данные модели и устанавливает значения ее свойств для пользователя. Редактирование также производится одним методом - методом UserManager.UpdateAsync()
Далее создадим модель EditModel:
public class EditModel { public int Year { get; set; } }
Пусть редактирование будет производиться только для года рождения пользователя.
Представление для удаления могло бы выглядеть так:
@{ ViewBag.Title = "Delete"; } <form method="post"> <h2>Вы уверены, что хотите удалить свой аккаунт?</h2> <button type="submit" >Да</button> </form>
И представление для редактирования:
@model AspNetIdentityApp.Models.EditModel @{ ViewBag.Title = "Edit"; } <h2>Редактировать данные профиля</h2> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div> @Html.ValidationSummary(true, "") <div> <p>Year: @Html.EditorFor(model => model.Year)</p> </div> <div> <div> <input type="submit" value="Сохранить" /> </div> </div> </div> }