这是一个很难解释的问题。
让我向您描述一个场景。
- 我有主页、注册页面、登录页面和仪表板页面
- 当我从注册页面注册申请并点击提交时。应用程序将处理请求,并在用户登录的情况下在仪表板上重定向我。现在,问题来了。当我按下后退按钮时。我看到注册页面,其中的字段由值填充。这不应该发生。
- 当我登录系统并从仪表板时,我点击了浏览器的后退。它会显示登录页面。这也不应该发生。
我希望它能清楚地说明我在寻找什么。
我尝试过的几种可能的解决方案:
- 使用代理页面。类似于许多邮件服务正在做的事情。但在 MVC 3 中,它不会检测页面加载事件,并且页面上的控制非常少。
- 在代理页面上使用 javascript 函数 window.history.forward()
- 呈现后使代理页面过期。
我并不完全相信上述解决方案。我希望获得一些以系统方式执行此操作的最佳实践以及问题的优雅解决方案。
请帮助我对我正在使用的现有解决方案提出建议,以及您是否有一些出色的工作解决方案。请分享。
谢谢大家。
仅供引用..我正在使用 ASP.NET MVC 4 进行开发。
最佳答案
在注册和登录页面的 Controller /操作方法中检查用户是否已经登录并重定向到例如。仪表板。
类似的事情取决于您如何进行身份验证。
public ActionResult Register()
{
//If already logged in no need to show register page again
if(Request.IsAuthenticated)
return Redirec("Dashboard");
return View();
}
编辑:更新答案以修复评论问题
我创建了一个包含以下内容的部分 View
<input type="hidden" id="reloader" value="" />
<script type="text/javascript">
if (document.getElementById("reloader").value === "reload")
window.location.reload();
else
document.getElementById("reloader").value = "reload"
</script>
然后,您可以将其与 @Html.Partial('ParttailViewName')
一起包含在您的注册和登录 View 中。
由于当您使用后退按钮时 DOM 会被缓存,因此如果用户使用后退按钮,上面的脚本将重新加载页面。
如果与我的第一个答案一起使用,您将得到您想要的行为。
关于javascript - ASP.NET MVC Web 应用程序中的后退按钮问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877861/