我想在ASP.NET Core中添加一个控制器,让它可以改变数据。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>
管理控制器......我觉得提交按钮链接到错误的表格帖子,因为当我调试活动是空的!和我的SQL Server没有变化。
[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 Server中没有变化。如何管理它?
要添加,删除和修改用户和角色在 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);