尝试通过 .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();
}
我不明白的是如何将用户名删除连接到特定用户。我尝试删除的用户名。
任何帮助将不胜感激!提前感谢!
如果要删除用户,则需要让该用户不创建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();
}