我有一个数据输入表单,我已将其分成 5 页,我想确保用户每次都以正确的顺序浏览这些页面。导航设置为正确浏览,包括返回和更改前一页的面包屑。但是,我想确保他们不会在不先浏览较早页面的情况下进入后续页面(即,浏览页面 A 和 B,然后通过直接输入 URL 跳到 D,或者从 D 开始使用书签)。
我已经做了一些尝试来防止这种情况发生,我最近的一次是这个,它检查每个页面所需的会话变量:
public static string CheckForPageSkipping()
{
var redirectTo = "";
if (HttpContext.Current.Session["TestDate"] == null) redirectTo = "~/Auth/SignOff.aspx";
if (HttpContext.Current.Session["Repairs"] == null) redirectTo = "~/Auth/RepairNotes.aspx";
if (HttpContext.Current.Session["MeterNum"] == null) redirectTo = "~/Auth/TestResults.aspx";
if (HttpContext.Current.Session["PremiseOwner"] == null) redirectTo = "~/Auth/PremiseInfo.aspx";
return redirectTo;
}
我在每个Page_Load
事件期间都调用了它,如果它不是他们所在的页面,我会重定向到它返回的页面。这几乎奏效了,直到我意识到它会阻止您向后导航(它总是将您发送回您尚未完成的最新页面)。我确信我可以拼凑一些东西来完成这项工作,但我想看看是否有更好的方法来做到这一点。一些内置于 ASP.NET 中的东西,或者某些人过去构建的更优雅的东西。
我在 Google 和 StackOverflow 上的搜索尝试都没有产生有用的结果。也许我使用了错误的术语,但主要是我在这里写的东西(现在顶部提出的建议也没有帮助)。