跳过页面防止用户我有一个数据输入表格,我已经碎裂开到5页,我想确保用户去通过每一次的正确顺序的页面。导航的设置使其能够正确地通过它,包括面包屑返回并更改以前的页面。但是,我想确保,如果不先浏览较早的页面,它们就不会到达较晚的页面(即,通过页面A和B,然后通过直接输入URL直接跳到D,或者使用D开始书签)。从一个ASP.NET表单
我已经做了一些尝试,以防止这种情况,我最晚一班是这一点,这检查具体到每一个页面需要会话变量:
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上的搜索尝试都没有得到有用的结果。也许我使用的是错误的术语,但主要是我在这里写的东西(现在顶部提出的建议也没有帮助)。
你有没有想过使用'Server.Transfer'在页面之间转换?网址没有变化,你可以加载你喜欢的任何页面。 –
我没有想到这一点(不知道我知道这个功能)。看起来很有希望。我将不得不再看一看。谢谢! – techturtle
好的,也许我没有实现它,但是当我用'Server.Transfer'替换了我的'Response.Redirect'语句时,它似乎首先起作用,但是接下来发生的事情是所有页面只显示一个页面在地址栏后面。所以从页面A移动到页面B仍然在地址栏中显示A,但是当从B移动到C时,它在地址栏中显示B. – techturtle