Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net core中删除用户?_C#_Asp.net Core_Asp.net Identity 3 - Fatal编程技术网

C# 如何在asp.net core中删除用户?

C# 如何在asp.net core中删除用户?,c#,asp.net-core,asp.net-identity-3,C#,Asp.net Core,Asp.net Identity 3,我在视图中创建了一个删除操作方法和一个操作按钮,但我不断收到错误。有人能看一下代码,告诉我出了什么问题吗 public async Task<IActionResult> DeleteUserd(string Id) { //get User Data from Userid var user = await _usermanager.FindByIdAsync(Id); //List Logins associated

我在视图中创建了一个删除操作方法和一个操作按钮,但我不断收到错误。有人能看一下代码,告诉我出了什么问题吗

  public async Task<IActionResult> DeleteUserd(string Id)
    {

       //get User Data from Userid
        var user = await _usermanager.FindByIdAsync(Id);

        //List Logins associated with user
        var logins = user;

        //Gets list of Roles associated with current user
        var rolesForUser = await _usermanager.GetRolesAsync(user);

        using (var transaction = _application.Database.BeginTransaction())
        {

            if (rolesForUser.Count() > 0)
            {
                foreach (var item in rolesForUser.ToList())
                {
                    // item should be the name of the role
                    var result = await _usermanager.RemoveFromRoleAsync(user, item);
                }
            }

            //Delete User
            await _usermanager.DeleteAsync(user);

            TempData["Message"] = "User Deleted Successfully. ";
            TempData["MessageValue"] = "1";
            //transaction.commit();
        }

        return RedirectToAction("UsersWithRoles", "ManageUsers"); 
    }
公共异步任务DeleteUserd(字符串Id)
{
//从Userid获取用户数据
var user=await\u usermanager.FindByIdAsync(Id);
//列出与用户关联的登录名
var logins=用户;
//获取与当前用户关联的角色列表
var rolesForUser=wait_usermanager.GetRolesAsync(用户);
使用(var事务=_application.Database.BeginTransaction())
{
if(rolesForUser.Count()>0)
{
foreach(rolesForUser.ToList()中的变量项)
{
//项应该是角色的名称
var result=wait_usermanager.RemoveFromRoleAsync(用户,项);
}
}
//删除用户
wait_usermanager.deleteAync(用户);
TempData[“消息”]=“用户已成功删除。”;
TempData[“MessageValue”]=“1”;
//commit();
}
返回重定向到操作(“UsersWithRoles”、“ManageUsers”);
}
以下是查看按钮:

 <a asp-action="DeleteUserd">Delete</a>
删除

您的链接没有传递要删除的id。因此,操作参数为null,当您将其传递给
FindByIdAsync
时,会出现异常,因为参数不能为null

简单地说,您只需更改以下链接:

<a asp-action"DeleteUserId" asp-route-id="@user.Id">Delete</a>
删除
其中,
@user
将是删除链接所针对的特定用户

然而,您的方法存在许多问题。诸如删除之类的原子操作永远不应该通过GET请求发生,而基本链接总是这样。相反,您可以使用表单/AJAX并通过POST提交,如果可以的话,最好是删除


您还需要确保当前用户被授权实际删除用户,否则您将面临巨大的灾难。最后,您应该确保当前登录的用户不能删除自己,这显然是有问题的。

您尝试读取错误了吗?我尝试了。。如果我理解他们,我就不会在这里了。下面是我得到的错误:AdminController.cs+var user=wait\u usermanager.FindByIdAsync(Id)中的Controllers.AdminController+d_u7.MoveNext();ArgumentNullException:值不能为null。参数名称:keyValues
Id
可能为空。。。异常中被破坏的代码是编译器为实现
wait
所做的所有工作的不幸副作用。。。