使用 asp.net 身份删除 Razor 页面中的用户
DELETE Users in a Razor Page Using asp.net Identity
我想使用以下代码删除用户:
private readonly UserManager<IdentityUser> userManager;
public UserPage(UserManager<IdentityUser> userManager)
{
this.userManager = userManager;
}
public async Task<IActionResult> OnPostDelete(string id)
{
IdentityUser user = await userManager.FindByIdAsync(id);
if(user != null)
{
var result = await userManager.DeleteAsync(user);
if (result.Succeeded)
{
return RedirectToAction("UserPage");
}
else
{
foreach (IdentityError error in result.Errors)
ModelState.AddModelError("", error.Description);
}
}
return Page();
}
这是我的 cshtml 文件,我在其中收到错误消息:“Foreach 语句无法对 UserPage 类型的变量进行操作,因为 Userpage 不包含 'GetEnumerator' 的 public 实例或扩展定义”
<table class="table table-sm table-bordered">
<tr><th>ID</th><th>Name</th><th>Email</th></tr>
@foreach (IdentityUser user in *Model*)
{
<tr>
<td>@user.Id</td>
<td>@user.UserName</td>
<td>@user.Email</td>
<td>
<form asp-page-handler="Delete" asp-route-id="@user.Id" method="post">
<button type="submit" class="btn btn-sm btn-danger">
Delete
</button>
</form>
</td>
</tr>
}
我该如何解决这个问题?提前致谢。
'UserPage' does not contain a public instance or extension definition for 'GetEnumerator'
foreach 语句用于遍历实现 System.Collections.IEnumerable 或 System.Collections.Generic.IEnumerable 接口的对象集合。
所以报错是因为*Model*
的类型不是correct.You需要改成实现System.Collections.IEnumerable或System.Collections.Generic.IEnumerable接口的对象集合。
我想使用以下代码删除用户:
private readonly UserManager<IdentityUser> userManager;
public UserPage(UserManager<IdentityUser> userManager)
{
this.userManager = userManager;
}
public async Task<IActionResult> OnPostDelete(string id)
{
IdentityUser user = await userManager.FindByIdAsync(id);
if(user != null)
{
var result = await userManager.DeleteAsync(user);
if (result.Succeeded)
{
return RedirectToAction("UserPage");
}
else
{
foreach (IdentityError error in result.Errors)
ModelState.AddModelError("", error.Description);
}
}
return Page();
}
这是我的 cshtml 文件,我在其中收到错误消息:“Foreach 语句无法对 UserPage 类型的变量进行操作,因为 Userpage 不包含 'GetEnumerator' 的 public 实例或扩展定义”
<table class="table table-sm table-bordered">
<tr><th>ID</th><th>Name</th><th>Email</th></tr>
@foreach (IdentityUser user in *Model*)
{
<tr>
<td>@user.Id</td>
<td>@user.UserName</td>
<td>@user.Email</td>
<td>
<form asp-page-handler="Delete" asp-route-id="@user.Id" method="post">
<button type="submit" class="btn btn-sm btn-danger">
Delete
</button>
</form>
</td>
</tr>
}
我该如何解决这个问题?提前致谢。
'UserPage' does not contain a public instance or extension definition for 'GetEnumerator'
foreach 语句用于遍历实现 System.Collections.IEnumerable 或 System.Collections.Generic.IEnumerable 接口的对象集合。
所以报错是因为*Model*
的类型不是correct.You需要改成实现System.Collections.IEnumerable或System.Collections.Generic.IEnumerable接口的对象集合。