后退按钮不会导致回发到MVC中的控制器操作

时间:2013-04-30 20:11:41

标签: asp.net-mvc postback

当我点击IE10中的后退按钮或Win7上的Chrome时,它没有达到我在MVC控制器中的断点。 IE开发人员工具中的“网络”选项卡显示其未修改304,Fiddler未捕获请求。

我期待回帖,所以我可以在我的控制器中工作。 就我而言,错误是:

  1. 登录
  2. 确保您在默认页面上
  3. 点击左上方的浏览器后退按钮,您现在将返回 登录屏幕
  4. 当您再次使用相同的凭据登录时 这样做 - 我得到“提供的防伪令牌是为用户”,但当前用户是“用户名”。
  5. 我已经尝试将它放在我的控制器中,但没有成功:

    this.HttpContext.Response.CacheControl = "private";
    this.HttpContext.Response.Cache.SetMaxAge(TimeSpan.FromSeconds(0));
    public ActionResult Index()
    {
        // Get: /Home/Index
        if (this.User.Identity.IsAuthenticated)
        {
            // send the user to the GlobalAssetDashboard
            return this.RedirectToAction(
                "GlobalAssetDashboard",
                "Dashboard",
                new
                    {
                        area = "DashboardArea"
                    });
        }
    
        return this.View("Login");
    }
     public ActionResult Login()
    {
        // GET: /Home/Login
        if (this.User.Identity.IsAuthenticated)
        {
            // send the user to the GlobalAssetList
            return this.RedirectToAction(
                "GlobalAssetDashboard",
                "Dashboard",
                new
                    {
                        area = "DashboardArea"
                    });
        }
    
        return this.View("Login", new LoginModel());
    }
    

    有没有办法强制回发或检测到这种情况并导致JavaScript刷新?或者我的控制器方法实现不正确?

1 个答案:

答案 0 :(得分:16)

通常,像这样的缓存规则不以它们执行的逻辑为条件,整个URL要么被缓存,要么不是。在这种情况下,这样简单的东西就足够了。

[OutputCache(NoStore=true, Duration=0)]
public ActionResult Login()
{

}

http://msdn.microsoft.com/en-us/library/dd492556(v=vs.108).aspx