2015-02-06 41 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