C# 浏览器的“后退”按钮不会返回所需的视图,而是返回缓存中的视图
我有一个注册页面,用户可以注册,注册后,他的令牌将被存储。注册后我会把他转到商店页面。如果他已注册,并单击浏览器的“后退”按钮,则应将他重定向到主页(不再查看注册页面)。但现在,当用户在注册后按“后退”按钮时,使用我的当前代码,他将返回到注册页面!。有什么想法吗?这是我的控制器,如果他已登录并注册,则返回主页视图:C# 浏览器的“后退”按钮不会返回所需的视图,而是返回缓存中的视图,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个注册页面,用户可以注册,注册后,他的令牌将被存储。注册后我会把他转到商店页面。如果他已注册,并单击浏览器的“后退”按钮,则应将他重定向到主页(不再查看注册页面)。但现在,当用户在注册后按“后退”按钮时,使用我的当前代码,他将返回到注册页面!。有什么想法吗?这是我的控制器,如果他已登录并注册,则返回主页视图: public virtual ActionResult Register(string returnUrl, string invitationCode = null,
public virtual ActionResult Register(string returnUrl, string invitationCode = null,
string emailAddressOrMobileNumber = null)
{
if (Request.IsAuthenticated) return RedirectToAction(MVC.Home.Index());}
如果只返回一个视图,则应:
1) 将html节或DIV添加到视图中或介绍布局,并设置css属性以将此DIV放在页面底部,如:
HTML:
<div id="bottom" > </div>
2) 在返回操作中,您应该返回路由url+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");
}
您可以在
Home:Index
操作中设置这些代码以清除缓存控制。您还需要检查URLreferer
以确认通过注册页面返回
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");
}
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");
}