【问题标题】:ReturnUrl not working in MVCReturnUrl 在 MVC 中不起作用
【发布时间】:2014-02-18 13:57:40
【问题描述】:

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

问题:如果我在带有一些搜索条件和分页的页面中间,当我在超时后再次登录时,我无法到达超时前的确切页面。当我在按钮点击时使用 Ajax 调用时,我无法在 Url 上看到搜索参数或页码。请有人帮忙。

On Timeout Ajax 正在返回以下错误状态并重定向到登录页面。

  error: function (xhr, ajaxOptions, thrownError) {
                   if (xhr.status == 401) {
                       window.location.href = "/Home/Logout";
                       return;
                   }

           }

【问题讨论】:

    标签: jquery asp.net-mvc-4


    【解决方案1】:

    您可以使用历史 API 来跟踪您所在的确切网址。您必须将其映射回您的路由/控制器到所需的页面。

    查看history.js,让生活更轻松:

    当您点击任何导致您想要“记住”的 AJAX 调用的链接/按钮时,您必须调用此 API。

    来自SO的示例:

    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");
    
       // now run whatever should happen because client triggered search()
    }
    

    您必须在每次操作时更新网址。然后,在Logoff 操作中,将当前网址作为ReturnUrl 参数添加到您的Logoff 网址中,它将起作用。

    【讨论】:

    • 谢谢帕特里克。在我的情况下如何使用 history.js 文件。即,超时后,当我再次登录以导航到确切页面时。
    【解决方案2】:

    由于您使用 ajax 调用而不是 URL 来执行搜索,因此您可以使用 cookie 和 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);
      }
    }
    

    (未测试)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2011-07-25
      相关资源
      最近更新 更多