Я хотел бы получить идентификатор пользователя, чтобы вернуть его в контроллер редактирования профиля.
Сначала я отправляю идентификатор на контроллер, чтобы идентифицировать пользователя, контроллер загружает идентификатор пользователя, что означает, что я могу обновить данные, если пользователь хочет.
Модель
EditUser:
public class EditUser
{
public InputModel Input { get; set; }
public class InputModel
{
[Required(ErrorMessage = "E-mail is request")]
[Display(Name = "E-mail")]
[EmailAddress]
public string Email { get; set; }
[Required(ErrorMessage = "Input password, is cannot null")]
[Display(Name = "Hasło")]
[DataType(DataType.Password)]
public string Password { get; set; }
}
}
View
Группа:
...
<li><a asp-action="Edit" asp-controller="ManageUser" class="edit">Edit Account</a></li>
Кому => Редактировать:
@using Microsoft.AspNetCore.Http
@inject UserManager<UserApp> UserLog
@model IndexModelView
@inject IHttpContextAccessor HttpContextAccessor
@{
Layout = "~/Views/Shared/_LayoutPanel.cshtml";
}
@if (User.Identity.IsAuthenticated)
{
var user = await UserLog.GetUserAsync(HttpContextAccessor.HttpContext.User);
var mail = await UserLog.GetEmailAsync(user);
<div class="row">
<div class="col-md-4">
<form asp-controller="ManageUser" asp-action="Edit" method="post">
<h1>Edit Account</h1>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<input placeholder="@UserLog.GetUserName(User)" class="my_inputs" disabled /><br />
</div>
<div class="form-group">
<input asp-for="EditPersonel.Input.Email" value="@mail" class="my_inputs" /><br />
<span asp-validation-for="EditPersonel.Input.Email" class="text-danger"></span>
</div>
<div class="form-group">
<input asp-for="EditPersonel.Input.Password" placeholder="Password" class="my_inputs" /><br />
<span asp-validation-for="EditPersonel.Input.Password" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</form>
</div>
</div>
}
Контроллер
ManageUserController:
[HttpGet]
[Authorize]
public IActionResult Panel()
{
return View("../ViewUser/Manage/Panel");
}
[HttpGet]
[Authorize]
public IActionResult Edit(int? id)
{
id = ViewBag.userId = UserManager.GetUserId(HttpContext.User);
var userId = id;
if (userId == null)
{
return RedirectToAction(nameof(Accounts.AccountController.Login), "Account");
}
else
{
UserApp user = UserManager.FindByIdAsync(userId.ToString()).Result;
return View("../ViewUser/Manage/Edit", user);
}
}
[HttpPost]
[Authorize]
public async Task<IActionResult> Edit(UserApp userDetail)
{
IdentityResult x = await UserManager.UpdateAsync(userDetail);
if (x.Succeeded)
{
return RedirectToAction(nameof(ManageUserController.Panel), "ManageUser");
}
return View("../ViewUser/Manage/Edit", userDetail);
}
После того, как:
У меня ошибка:
Я всегда возвращаюсь к Учетной записи контроллера для просмотра имени входа, вместо представления редактирования профиля в Controller ManageUser, редактирую входные данные с помощью данных и обновляю пользователя.
Edit:
Я добавляю:
id = UserManager.GetUserId(ViewBag.userId);
Для редактирования [HttpGet] в ManageUserController
У меня ошибка: