在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)在remarksgrid div中发布整个index.cshtml + Layout.cshtml double。 所以这是不正确的。

这是它调用的动作(SetEnddateRemarkToY yesterday):

  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 return View(Remarks); } 

如果我在成功的AJAXpost之后没有执行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

使用jQuery.post时 ,将通过.done方法返回新页面

jQuery的

 jQuery.post("Controller/Action", { d1: "test", d2: "test" }) .done(function (data) { jQuery('#reload').html(data); }); 

HTML