尝试通过 .NET MVC 中的用户名从数据库中删除用户

本文关键字:用户 数据库 删除 NET MVC | 更新日期: 2023-09-27 17:56:26

我是C# MVC的新手,在弄清楚如何与我尝试删除的特定用户建立连接时遇到问题。

我有一个表,可以按用户名(用户。用户名)

@using (Html.BeginForm("DeleteUser", "Manage", FormMethod.Post))
 {
<table class="table">
    <tr>
        <th>Username</th>
        <th>Role</th>
    </tr>
    @foreach (var user in Model)
    {
        <tr>
            <td>
                @user.UserName
            </td>
            <td>
                @{
                    var roleId = user.UserRoles != null && user.UserRoles.Any() ? user.UserRoles.First().RoleId : (short) 2;
                }
                @Html.DropDownList(string.Format("User_{0}", user.UserId), ListProvider.GetRoles(roleId), new {})
                <input type="button" data-id="@user.UserId" value="Set" class="btn btn-primary" id="btn-set"/>
                <input type="submit" value="Delete" class="btn btn-danger"/>
            </td>
        </tr>
    }
</table>

然后,我的控制器中有一个删除用户操作,它链接到删除用户方法。

 [HttpPost]
    public ActionResult DeleteUser(string usernameToDelete)
    {
        var deleteUserObj = new User {UserName = usernameToDelete};
        UsersContext deleteUser = new UsersContext();
        deleteUser.DeleteUser(deleteUserObj);
        return RedirectToAction("Index");
    }

在上下文中完成删除用户方法:

public void DeleteUser(User user)
    {
        Users.Remove(user);
        SaveChanges();
    }

我不明白的是如何将用户名删除连接到特定用户。我尝试删除的用户名。

任何帮助将不胜感激!提前感谢!

尝试通过 .NET MVC 中的用户名从数据库中删除用户

如果要删除用户,则需要让该用户不创建User对象的新实例。

这需要改变:

var deleteUserObj = new User {UserName = usernameToDelete};

像这样:

var deleteUserObj = UserContext.LoadItemByUsername(usernameToDelete);

其中LoadItemByUsername是一种检查数据库以使用用户名查找用户的方法。

您可能遇到的问题是,如果您的列未设置为唯一值,则搜索用户名可能会产生更多结果。

实现

此目的的更正确方法是使用用户的 ID。然后使用此主键可以直接删除用户对象。

[HttpPost]
public ActionResult DeleteUser(int id)
{
    UsersContext deleteUser = new UsersContext();
    deleteUser.Delete(id);
    return RedirectToAction("Index");
}

其中deleteUser.Delete(id);是需要用户的 PK 才能删除对象的方法。

更新

<a href="@Url.Action("DeleteUser", "ControllerName", new { id = user.UserId })">Delete user</a>

更新 2

public void DeleteUser(int id)
{
    User delObj = Users.Where(u => u.UserId == id);
    Users.Remove(delObj);
    SaveChanges();
}