[asp.net-mvc]试图从.NET MVC 中的用户名对应的数据库中删除用户

发布时间: 2017/3/25 13:36:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我刚到 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>

在我的控制器,链接到删除用户方法便 DeleteUser 行动。

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

完整的 DeleteUser 方法在上下文中︰

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

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

任何帮助将不胜感激 !在此先感谢 !

解决方法 1:

如果你想要删除的用户,您需要获得该用户不创建新实例的 User 对象。

这需要改变︰

var deleteUserObj = new User {UserName = usernameToDelete};

对就像这样︰

var deleteUserObj = UserContext.LoadItemByUsername(usernameToDelete);

其中 LoadItemByUsername 是一种方法,检查 db 来查找用户使用的用户名。

你的问题可以是搜索的用户名可能会有更多的结果,如果你列未设置为唯一值。

更适当的方式来实现这一目标使用的用户 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();
}
赞助商