浏览器的后退按钮不返回所需的视图,而是返回缓存中的视图

时间:2019-04-20 10:43:50

标签: c# asp.net asp.net-mvc

我有一个注册页面,用户可以在其中进行注册,注册后,他的令牌将被存储。然后注册后,我会将他重定向到商店页面。如果他已注册并单击浏览器的后退按钮,则应将其重定向到主页(而不是再次看到注册页面)。但是现在有了我当前的代码,当用户在注册后按下“后退”按钮时,他将返回到注册页面!有任何想法吗?这是我的控制器,如果他已登录并注册,它将返回主页视图:

public virtual ActionResult Register(string returnUrl, string invitationCode = null,
            string emailAddressOrMobileNumber = null)
        {
            if (Request.IsAuthenticated) return RedirectToAction(MVC.Home.Index());}

2 个答案:

答案 0 :(得分:0)

如果您只返回视图,则应该:
1)在您的视图中添加一个html节或DIV或介绍您的布局,并设置css属性以将该DIV放在页面底部,例如:

HTML:

<div id="bottom" > </div>

CSS:

 #bottom { 
        height: 40px; 
        position: fixed; 
        bottom:0%;
        width:100%; 
        background-color: #393838; 
        opacity: 1;
    }

2)在return动作中,您应该返回路线网址和DIV的ID,以滚动到该div
控制器:

public virtual ActionResult Register(string returnUrl, string invitationCode = null,
            string emailAddressOrMobileNumber = null)
        {
            if (Request.IsAuthenticated) return RedirectToAction(MVC.Home.Index());

}
return Redirect(Url.RouteUrl(new { controller = "Controller", action = "Action" }) + "#bottom");
}

答案 1 :(得分:0)

您可以在Home:Index操作中设置这些代码以清除缓存控制。您还需要选中UrlReferrer来确认按注册回家页面。

if (Request.UrlReferrer.PathAndQuery == "/register")
{
    HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
    HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
    HttpContext.Current.Response.AddHeader("Expires", "0");
}