これは単純な論理問題のはずですが、何らかの理由で、これを実装するための半クリーンなアルゴリズムを考え出そうと何時間も苦労してきました。私は SQL Server のバックグラウンドで MVC3 を使用していますが、MVC について知らなくても、アルゴリズムを手伝ってくれるかもしれません。
ウィザードのようなインターフェイスを利用するアプリケーションを作成しています。今のところ、これらのウィザード画面間のナビゲーションは非常に直線的です (次のボタンは直後のページに移動し、前のボタンは直前のページに移動します)。スコープの変更により (楽しい、私は知っています)、これをあまり直線的にしないように言われました。
最初のランスルーでは、ユーザーは次のようにすべてのページを直線的な順序で訪問する必要があります。
Step 1
Step 2
Step 3
SubStep 1
Sub-SubStep 1
Sub-SubStep 2
SubStep 2
Sub-SubStep 1
Sub-SubStep 2
...
SubStep *n*
Sub-SubStep 1
Sub-SubStep 2
Submission
ここで、nはステップ 2 で入力したものに基づく変数です。
ウィザードが送信されると、管理者によってレビューされます。情報が不足していることに気付いた場合、特定のページのロックを解除できます。ユーザーが戻ってその情報を入力すると、それらの特定のページしか表示できないはずです。たとえば、ナビゲーションは次のようになります。
Step 2
Step 3
SubStep 1
Sub-SubStep2
Submission
私の現在の実装は、ロックされていないページを追跡するデータベース内のテーブルで構成されています。[次へ] ボタンをクリックすると、次のページが何であるかを判断するメソッドが呼び出されます。ステップ 3 で行われる奇妙で可変的なナビゲーションのため、このメソッドは簡単に壊れてしまう if-else 分岐の悪夢です。
これを簡素化するための提案は大歓迎です。