Jquery ReturnUrl在MVC中不工作
我的MVC应用程序在20分钟后超时。也就是说,当我在20分钟后自动单击任何按钮时,应用程序将被重定向到登录页面。我的页面中的所有按钮都使用Ajax调用,因此当我们单击任何按钮时,Ajax将返回失败代码并重定向到登录页面Jquery ReturnUrl在MVC中不工作,jquery,asp.net-mvc-4,Jquery,Asp.net Mvc 4,我的MVC应用程序在20分钟后超时。也就是说,当我在20分钟后自动单击任何按钮时,应用程序将被重定向到登录页面。我的页面中的所有按钮都使用Ajax调用,因此当我们单击任何按钮时,Ajax将返回失败代码并重定向到登录页面 error: function (xhr, ajaxOptions, thrownError) { if (xhr.status == 401) { window.location.href
error: function (xhr, ajaxOptions, thrownError) {
if (xhr.status == 401) {
window.location.href = "/Home/Logout";
return;
}
}
问题:如果我在一个页面的中间,有一些搜索标准和分页,当我在超时后再次登录时,我无法到达超时之前的确切页面。由于我在单击按钮时使用Ajax调用,所以无法在Url上看到搜索参数或页码。请有人帮帮忙
超时时,Ajax返回以下错误状态并重定向到登录页面
error: function (xhr, ajaxOptions, thrownError) {
if (xhr.status == 401) {
window.location.href = "/Home/Logout";
return;
}
}
您可以使用历史API来跟踪您所在的确切url。您必须将其映射回路由/控制器中所需的页面 看看哪一个让生活更轻松: 当单击任何链接/按钮时,您必须调用此API,该链接/按钮会导致您希望“记住”的AJAX调用 样本来自:
您必须在每次操作时更新url。然后,在
Logoff
操作中,将当前url作为ReturnUrl
参数添加到Logoff
url中,它将起作用。因为您使用ajax调用来执行搜索,而不是url,所以您可以在注销之前使用cookies和history.js来重复上一次搜索
在搜索按钮中,单击JS处理程序:
function search(params) {
// record your current UI position
// data (to save), title (to set on page), url (to set on page)
History.pushState({ params: params }, "Search", "?search");
// Ajax call here to do your search
}
在重定向之前,在登录操作中创建cookie:
Response.Cookies.Add(new HttpCookie("UserLogin"));
添加document.ready JS函数以检查“UserLogin”cookie是否存在,如果存在,则检查
if (cookieExists("UserLogin")){
removeCookie("UserLogin");
var State = History.getState();
if (State.url == "?search") {
search(data.params);
}
}
(未测试)谢谢Patrick。如何在我的案例中使用history.js文件。也就是说,在超时之后,当我再次登录到确切的页面时。