2015-02-06 38 views
1

在ASP MVC 5我有一个表中删除每行按钮。当我在“删除”点击按钮i显示模式确认(引导)对话框:如果用户确认删除我调用javascript函数如下:Asp MVC如何刷新数据删除后的索引页

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

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

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

索引动作调用和执行,但在HTML页面不会刷新(模态对话框保持可见和不更新该表中的数据。浏览器不显示刷新页面的图标)

如何重新加载索引页?

+0

你检查了浏览器的JavaScript控制台是否有错误? – mason 2015-02-06 14:41:28

+0

没有错误...也许浏览器不知道它必须刷新页面,因为我执行ajax请求? – Tom 2015-02-06 14:45:37

+0

AJAX的要点是避免页面刷新。为什么不再进行另一次AJAX调用来检索更新的数据? – mason 2015-02-06 15:01:13

回答

6

您无法通过重定向来响应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(); 
     } 
    }); 
} 
0

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

+0

点采取 - 编辑答案重述我的问题作为解决方案。 – esmoore68 2015-02-06 15:32:58