長い説明ですが、これはかなり単純な質問だと思います。ここで何かが足りないと思います。
ドロップダウン メニューからユーザー ロールを選択した後、そのロールのユーザーを含む部分ビューを ajax を使用して DIV に読み込みます。
$.ajax({
type: 'post',
data: { id: roleId},
url: '@Url.Action("Manage","User")',
success: function (data) {
$("#user-manage").html(data);
}
});
現在、ページには、ユーザーのリストと [削除] ボタンを含むコンボボックスがあります。ユーザーを強調表示して [削除] ボタンを押すと、ユーザーが削除されます。
すごい!それは機能しますが、私の問題は、ページが更新されるまで、削除されたユーザーがコンボボックスリストから消えないことです。また、ページを更新できません。これは、Web サイトのユーザーがロールの選択からやり直す必要があることを意味するためです。
それで、質問は、その削除ボタンを押すとすぐにコンボボックスでユーザーを非表示にするにはどうすればよいですか?
現在、削除ボタンが押されると、選択された UserId が、選択されたユーザーを削除し、更新された JSON ユーザー リストを返す次の ajax 呼び出しに渡されます。
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(); Web サイトのユーザーが役割を選択して更新されたユーザーのリストを表示することを望まないため、私にはうまくいきません。
これをインタラクティブにするにはどうすればよいですか?ユーザーを削除すると消え、後で追加すると表示されますか?
前もって感謝します。
編集。コンボボックスに返された Json オブジェクト:
return Json(roleUsers.Select(x => new
{
Id = x.Id,
Name = x.Name
}));