Sql server 管理员如何在ASP.NET核心中更改SQL Server中的数据?

Sql server 管理员如何在ASP.NET核心中更改SQL Server中的数据?,sql-server,asp.net-core,model-view-controller,asp.net-core-mvc,asp.net-core-identity,Sql Server,Asp.net Core,Model View Controller,Asp.net Core Mvc,Asp.net Core Identity,我正在尝试为ApplicationUser.cs添加一个控制器,这样当管理员登录时,他们就可以查看、编辑、删除dbo.AspNetUsers表中的任何记录,但我认为我做得不对 <form asp-controller="Admin" asp-action="ActiveUser" method="post"> <input type="hidden" asp-for="@user.Email" /> <button

我正在尝试为
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>

活跃的
管理员控制器:

  [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();
    }
[HttpGet]
public IActionResult ActiveUser(){return View();}
[HttpPost]
公共异步任务ActiveUser(ApplicationUser模型)
{
var active=_userManager.Users.FirstOrDefault(p=>p.Email==Model.Email);
如果(活动!=null)
{
active.IsActive=true;
使用(var事务=_application.Database.BeginTransaction())
{
尝试
{
wait_application.SaveChangesAsync();
Commit();
}
捕获(例外情况除外)
{
_=(例如消息);
transaction.Rollback();
返回视图(“Er”);
}
}
}
返回视图();
}

但我认为提交按钮链接到了错误的表单帖子,因为当我调试active时,它是空的!我的SQL Server中没有任何更改。如何管理它?

要在
AspNetUsers
中添加、删除和修改用户和角色,必须使用
UserManager
rolemager
服务。不要试图直接使用
DbContext
修改实体

因此,要创建用户,请调用
UserManager.CreateAsync()
方法。 保存对用户调用的更改
UserManager.UpdateAsync()

示例-要通过电子邮件地址查找用户,请更改属性,然后保存更改:

var currentUser=await\u userManager.findbyemailsync(电子邮件);
currentUser.IsActive=true;
wait_userManager.UpdateAsync(当前用户);
这同样适用于用户所处的角色。使用
rolemager
服务添加和删除角色

if(!wait roleManager.RoleExistsAsync(roleName))
{
等待roleManager.CreateAsync(新的IdentityRole(roleName));
}
wait userManager.AddToRoleAsync(currentUser,roleName);

是否为Model.Email空,即您是否收到表单中的数据?数据库是否包含有问题的用户?还可以考虑在ModelState.IsValid中的包装代码,它会告诉您是否有任何模型错误添加到MODELATE。在用户管理器中,似乎没有这样的方法(代码> >用户管理器。用户。FrestSturrError()/代码>)。您是如何定义它的?请检查您的电子邮件是否为空。请更改“代码> ASP for =“@用户电子邮件”< /COD> > <代码> ASP for =。“Email”?我按照你说的做了,但它显示了这个错误“ArgumentNullException:值不能为空。(参数“email”)“这只是示例代码。您可以尝试Model.email而不是email。