Dan*_*aan 11 asp.net-mvc jquery asp.net-mvc-3 asp.net-mvc-4
我有一个带有图像链接的网格(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);
});
}
Run Code Online (Sandbox Code Playgroud)
注释掉你可以看到我自己的警报和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");
}
Run Code Online (Sandbox Code Playgroud)
这是它重定向到的操作:
[HttpGet]
public ActionResult Index() {
//Some code to retrieve updated remarks.
//Remarks is pseudo for List<Of Remark>
return View(Remarks);
}
Run Code Online (Sandbox Code Playgroud)
如果我在成功的AJAX帖子之后没有执行window.location.reload,那么视图将永远不会重新加载.我是MVC的新手,但我确信有更好的方法可以做到这一点.我不是在理解一些基本的东西.也许正朝着正确的方向努力?先感谢您.
Sat*_*pal 18
当您请求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 });
}
Run Code Online (Sandbox Code Playgroud)
JS电话:
$.post("Home/SetEnddateRemarkToYesterday", { remarkID: remarkID }, function (result) {
window.location.href = result.Url
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19071 次 |
| 最近记录: |