1

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

4

4 に答える 4

1

ページを制御しているように見えるので、それらを取り除き、コードをユーザー コントロールに入れ、これらのコントロールをパネルまたはプレースホルダーの 1 つのページに登録し、コードでこれらのパネルの可視性を制御して、適切に適用できるようにします。これらが訪問される順序は?

于 2013-01-15T18:13:54.220 に答える
1

<asp:wizard>ビルトインコントロールを見ましたか?あなたのニーズに合っていると思いますし、さまざまなシナリオに合わせて構成できます。その使用法を説明するリンクは次のとおりです 。 http://msdn.microsoft.com/en-us/magazine/cc163894.aspx

現在の公式ドキュメントも参照してください: MSDN ライブラリ

于 2013-01-15T18:31:56.187 に答える
0

Wizardコントロールを使用せずPanel、sを使用したくない場合は、Server.TransferまたはCrossPagePostingのいずれかが機能するはずです。どちらの方法でも、 PreviousPageをチェックすると、ページスキップの問題がカバーされます。

Server.Transferにはあなたが言及したURLの奇妙さがありますが、それ以外はかなり簡単です。

クロスページ投稿は、ニーズに合わせて適切に調整されています。

  1. 各フォームを次のフォームページに投稿します。
  2. そこでデータを受信して​​処理します(正しく設定されている場合は強い型付けを使用します)。
  3. すべてがチェックアウトされた場合にのみ新しいページをロードします(PreviousPageが正しく、データが有効です)。

確かに、私自身はこれらの方法のいずれかを直接使用した経験はありませんが、あなたの状況を処理するためにこれらの方法をどのように実装できるかはわかります。

于 2013-01-15T22:10:28.163 に答える
0

パネルを使用してマルチパート フォームを使用するための適切なパターンがここで説明されています。

パネルを使用したマルチパート フォーム

于 2013-01-15T18:28:34.113 に答える