Asp.net-Mvc
AJAX 發布後視圖不刷新
我有一個帶有圖像連結的網格(Infragistics JQuery 網格)的視圖(Index.cshtml)。如果使用者點擊此連結,將呼叫以下 jquery 函式:
function ConfirmSettingEnddateRemarkToYesterday(remarkID) { //Some code... //Call to action. $.post("Home/SetEnddateRemarkToYesterday", { remarkID: remarkID }, function (result) { //alert('Succes: ' + remarkID); //window.location.reload(); //$('#remarksgrid').html(result); }); }註釋掉你可以看到我自己的警報和 2 次嘗試刷新視圖。location.reload() 有效,但對於瀏覽器來說基本上是太多的工作。.html(result) 在備註網格 div 中發布整個 index.cshtml + Layout.cshtml 雙倍。所以這是不正確的。
這是它呼叫的操作 (SetEnddateRemarkToYesterday):
public ActionResult SetEnddateRemarkToYesterday(int remarkID) { //Some logic to persist the change to DB. return RedirectToAction("Index"); }這是它重定向到的操作:
[HttpGet] public ActionResult Index() { //Some code to retrieve updated remarks. //Remarks is pseudo for List<Of Remark> return View(Remarks); }如果我在成功的 AJAX 發布後不執行 window.location.reload,則視圖將永遠不會重新載入。我是 MVC 的新手,但我確信有更好的方法來做到這一點。我不了解這裡的基本內容。也許是朝著正確的方向輕推?先感謝您。
當您請求 AJAX 呼叫時,您應該使用其響應重定向
修改您的控制器以返回帶有登陸 url 的 JSONResult:
public ActionResult SetEnddateRemarkToYesterday(int remarkID) { //Some logic to persist the change to DB. var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Controller"); return Json(new { Url = redirectUrl }); }JS 呼叫:
$.post("Home/SetEnddateRemarkToYesterday", { remarkID: remarkID }, function (result) { window.location.href = result.Url });
在 Ajax 發布後,您需要呼叫特定的 Url.. 像這樣.. window.location.href = Url