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
所做的所有工作的不幸副作用。。。