从AJAX调用控制器操作而非重定向用户

时间:2014-11-06 18:35:17

标签: javascript ajax asp.net-mvc

我有控制器操作,用于注销用户。它可以通过两种方式实现:

  • 首先是用户点击页面上的LogOut链接,如下所示:<a href="/MayApp/Account/LogOut">Logout</a>它运作正常。
  • 第二种方式是用户何时处于空闲状态(一段时间不做任何事)。一段时间后,AJAX调用发生并调用控制器动作,如下所示:

    $。AJAX({         url:'/ MyApp / Account / LogOut',         类型:'GET',         成功:function(){             sessionStorage.removeItem( 'currentTime的');         }     })

问题是因为第二种方式无法正常工作。它通常调用控制器操作,但控制器操作从不将用户重定向到登录页面。用户已注销,但仍保留在同一页面上。

我按以下方式使用重定向:

[AllowAnonymous]
    public ActionResult LogOut()
    {

        // Some Logic

        return Redirect(Url.Action("Login", "Account"));
    }

我的问题是: 如果我使用异步调用会发生吗?

我也尝试过同步AJAX调用,但它不起作用。

如何以与AJAX不同的方式调用控制器动作?

由于

1 个答案:

答案 0 :(得分:1)

尝试:

return RedirectToAction("Login", "Account");

修改

问题在于,因为AJAX调用正在调用Logout操作,所以它被重定向的AJAX调用。考虑到这一点,只需在JavaScript中使用window.location执行客户端重定向。

您可以使用以下内容:

return JavaScript("window.location = 'http://www.google.co.uk'");

或重新加载当前页面(因此任何其他路由都可以说用户无权查看此页面。

return JavaScript("location.reload(true)");