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

时间:2015-06-16 13:21:54

标签: c# sql .net asp.net-mvc

我是C#MVC的新手,并且无法弄清楚如何与我要删除的特定用户建立连接。

我有一个用户名(user.UserName)

读取用户的表
@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 Action,它链接到删除用户方法。

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

在Context中完成DeleteUser方法:

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

我不明白的是如何将usernameToDelete连接到我想删除的特定user.Username。

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

1 个答案:

答案 0 :(得分:3)

如果要删除用户,则需要让该用户不创建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();
}