Asp MVC如何在数据删除后刷新索引页面

时间:2015-02-06 14:31:04

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

在ASP MVC 5中我有一个表,每行都有删除按钮。当我点击“删除”按钮时,我会显示一个模态确认(引导程序)对话框:如果用户确认删除,我会调用以下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页面(模态对话框仍然可见,表格数据未更新。浏览器不显示刷新页面的图标)

如何重新加载索引页?

2 个答案:

答案 0 :(得分:9)

您无法使用重定向来响应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; });
}

作为刷新页面的替代方法,您可以从表中删除已删除的行:

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

答案 1 :(得分:0)

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