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 の両方で検索を試みましたが、有用な結果は得られませんでした。間違った用語を使用していたのかもしれませんが、ほとんどはここに書いたようなものでした (上部にある提案も役に立ちませんでした)。