AspMVC删除数据后如何刷新索引页

Asp MVC how refresh index page after data deletion

在 ASP MVC 5 中我有一个 table 每行都有一个删除按钮。当我单击 "Delete" 按钮时,我会显示一个模式确认 (bootstrap) 对话框:如果用户确认删除,我将调用以下 javascript 函数:

function confirmedDeletion(){
    $.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
    });
}

因此在控制器中称为删除操作:

[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
    ...
    ...
    db.SaveChanges();
    return RedirectToAction("Index");
}

调用并执行了 Index 操作,但未刷新 html 页面(模态对话框保持可见且 table 数据未更新。浏览器未显示图标刷新页面)

如何重新加载索引页?

您无法通过重定向响应 ajax 调用。您可以使用 javascript:

在 ajax 回调函数中重新加载页面
function confirmedDeletion(){
    $.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
        if(data.Success) {
            window.location.reload();
        }
    });
}

[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
    ...
    ...
    db.SaveChanges();
    return Json(new { Success = true; });
}

作为刷新页面的替代方法,您可以从 table:

中删除已删除的行
function confirmedDeletion($button){
    $.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
        if(data.Success) {
            $button.closest('tr').remove();
        }
    });
}

在成功调用后删除行(如 Zabravsky 的回答)似乎是最干净的答案。但是如果你想在删除调用后刷新整个页面,似乎你不应该使用 Ajax,你应该直接提交表单。