问题描述
我已经自定义默认用户身份并创建了多个用户。 假设我是管理员,并且我想管理其他用户信息(更改属性值)。 如果我有他们的ID,该如何访问其他用户的数据。
我可以检索表中的所有用户,并在“ asp-route-id”中获取其ID。
@foreach (var item in Model.ApplicationUser)
{
<tr>
<td>
@Html.displayFor(modelItem => item.FirstName)
</td>
<td>
@Html.displayFor(modelItem => item.LastName)
</td>
<td>
@Html.displayFor(modelItem => item.Id)
</td>
<td>
<a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage" asp-route-id="@item.Id">Edit</a>
使用userManager检索\更新其他用户信息时,我陷入了困境 在“获取和发布”方法中。
解决方法
我设法使用lambda表达式解决了
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
ID应该通过asp-route获取
我已发布以下代码以供参考:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using WebApplication2.Models;
namespace WebApplication2.Areas.Identity.Pages.Account.Manage
{
public partial class IndexModel : PageModel
{
private readonly UserManager<ApplicationUser> _userManager;
//private readonly SignInManager<ApplicationUser> _signInManager;
public IndexModel(
UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
[BindProperty]
public InputModel Input { get; set; }
public class InputModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Username { get; set; }
}
private async Task LoadAsync(string ID)
{
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
Input = new InputModel
{
FirstName = UsertoEdit.FirstName,LastName = UsertoEdit.LastName,Username = UsertoEdit.UserName
};
}
public async Task<IActionResult> OnGetAsync(string ID)
{
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
if (UsertoEdit == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
await LoadAsync(ID);
return Page();
}
public async Task<IActionResult> OnPostAsync(string ID)
{
var UsertoEdit = _userManager.Users.FirstOrDefault(u => u.Id == ID);
if (UsertoEdit == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
if (!ModelState.IsValid)
{
await LoadAsync(UsertoEdit.UserName);
return Page();
}
if (Input.FirstName != UsertoEdit.FirstName)
{
UsertoEdit.FirstName = Input.FirstName;
}
if (Input.LastName != UsertoEdit.LastName)
{
UsertoEdit.LastName = Input.LastName;
}
await _userManager.UpdateAsync(UsertoEdit);
return RedirectToPage("/Users");
}
}
}