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



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

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

您可以在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");
}

如果你只返回一个视图,你应该:
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( 在返回操作中,您应该返回您的路由网址 + 您的 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");
}

最新更新