一个很长的解释,但我相信这是一个非常简单的问题。我想我在这里遗漏了一些东西。
从下拉菜单中选择用户角色后,我将该角色的用户的部分视图加载到带有 ajax 的 DIV 中:
$.ajax({
type: 'post',
data: { id: roleId},
url: '@Url.Action("Manage","User")',
success: function (data) {
$("#user-manage").html(data);
}
});
现在,在页面上,我有一个包含用户列表和删除按钮的组合框。我突出显示一个用户,按下删除按钮,用户被删除。
伟大的!它可以工作,但是我的问题是,在刷新页面之前,已删除的用户不会从组合框列表中消失。而且我无法刷新页面,因为这意味着网站用户必须重新开始选择角色。
所以,问题是我怎样才能让用户在我点击删除按钮后立即消失在组合框中?
现在,当按下删除按钮时,选定的 UserId 将传递以下 ajax 调用,该调用删除选定的用户并返回更新的 JSON 用户列表:
function removeUser() {
var selectedUser = $("#user-combo").find(":selected").val(); //grab selected user
var selectedForRole = $("#role-id").val(); //hidden field to store selected role
$.ajax({
url:"/User/Delete", //Delete selected user and return updated Json list
data: { id: selectedUser , roleId: selectedForRole },
type: 'post',
success: function (data) {
var userList = $("#user-combo");
var listContent;
$.each(data, function (index, item) {
listContent += "<option value='" + item.Id + "'>" + item.Name + "</option>";
});
userList.html(listContent);
}
});
}
从功能上讲,这是可行的。用户被删除,但我没有看到它反映在 $("#user-combo") 框中,直到我刷新屏幕。
location.reload(); 对我不起作用,因为我不希望网站用户通过选择角色来查看更新的用户列表。
当我删除它们并在稍后添加它们时出现时,如何使这种交互和用户消失?
先感谢您。
编辑。Json 对象返回到组合框:
return Json(roleUsers.Select(x => new
{
Id = x.Id,
Name = x.Name
}));