在ASP.NET Core中,管理员如何在SQL Server中更改数据?

问题描述 投票:0回答:1

我想在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中没有变化。如何管理它?

sql-server asp.net-core model-view-controller asp.net-core-mvc asp.net-core-identity
1个回答
1
投票

要添加,删除和修改用户和角色在 AspNetUsers 你必须使用 UserManagerRoleManager 服务。不要试图直接使用这些服务来修改实体。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);

微软文档中包含了一些更新用户和角色的例子。

© www.soinside.com 2019 - 2024. All rights reserved.