【问题标题】:ASP Net Core 3.0 Web forms. Working with Identity, is it possible to add a delete function to delete users?ASP Net Core 3.0 Web 表单。使用 Identity,是否可以添加删除功能来删除用户?
【发布时间】:2020-05-08 21:08:44
【问题描述】:

我最近开始学习 ASP Net Core。我从 Web 表单 Razor 页面开始。说到重点,我制作了一个连接到 Identity 数据库的表。它包含数据库内部 AspNetUsers 表中的用户名和电子邮件。到目前为止一切都很好。我正在尝试向表中添加删除功能,以便可以使用删除功能删除注册用户。我尝试了一些东西,但我不知道我要去哪里错了。如果有人可以帮助我,我会很高兴,因为我正在为此苦苦挣扎一段时间。我将粘贴代码,也许有人可以提醒我。我正在尝试将删除函数用作 OnPost,它将通过 asp-page-handler 连接到表。谁能告诉我哪里出错了?

.cshtml

  @page
@model ProiectLicenta.Pages.Userlist.IndexModel
@{
    ViewData["Title"] = "UserList";
}

<h1>UserList</h1>

<table class="table">
    <thead>
        <tr>
            <th>
                UserName
            </th>
            <th>
                Email
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @for (var i = 0; i < Model.UserList.Count; i++)
        {
            <tr>
                <td>
                    @Model.UserList[i].UserName
                </td>
                <td>
                    @Model.UserList[i].Email
                </td>
                <td>
                    <a asp-action="Edit" asp-route-id="@Model.UserList[i].Id">Edit</a> |
                    <a asp-action="Details" asp-route-id="@Model.UserList[i].Id">Details</a> |
                    <a asp-page-handler="Del" asp-route-id="@Model.UserList[i].Id">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>

.cshtml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;

namespace ProiectLicenta.Pages.Userlist
{

    public class IndexModel : PageModel
    {
        private readonly UserManager<IdentityUser> _userManager;

        public IndexModel(UserManager<IdentityUser> userManager)
        {
            _userManager = userManager;
        }
        public List<IdentityUser> UserList { get; set; }
        public void OnGet()
        {
            UserList = _userManager.Users.ToList();
        }
        public async Task<ActionResult> OnPostDel(string id)
        {
            UserList = _userManager.Users.ToList();
            var User = await _userManager.FindByIdAsync(id);
            if (User != null)
            {
                IdentityResult result = await _userManager.DeleteAsync(User);
            }
            return RedirectToPage("Index");
        }
    }
}

【问题讨论】:

    标签: asp.net-core razor project identity


    【解决方案1】:

    &lt;a&gt;标签点击事件会发送一个Get请求,所以使用OnGetDel而不是OnPostDel

    public async Task<ActionResult> OnGetDel(string id)
    {
    
        var User = await _userManager.FindByIdAsync(id);
        if (User != null)
        {
            IdentityResult result = await _userManager.DeleteAsync(User);
        }
        return RedirectToPage("Index");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多