Jquery ReturnUrl在MVC中不工作

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

我的MVC应用程序在20分钟后超时。也就是说,当我在20分钟后自动单击任何按钮时,应用程序将被重定向到登录页面。我的页面中的所有按钮都使用Ajax调用,因此当我们单击任何按钮时,Ajax将返回失败代码并重定向到登录页面

  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文件。也就是说,在超时之后,当我再次登录到确切的页面时。