2011-02-01 6 views
0

MVCアプリケーションで解決するにはウィザードのような問題があります。私はJavaScriptを持っていないと私は3つのビュー、各ステップの1つがあります。ASP.NET MVCウィザードのロジックの種類

シナリオは次のとおりです。私は3段階のプロセスを持っています。 S1はS2にポストし、S2はS3にポストします。 モデルの検証エラーが発生した場合、データは既にそこに掲載されているため、エラーは次のビューでキャッチされます。私のコードは次のようになります:ok(ELSE return)( "PreviousView"、modeldata)ならばreturn(View、modeldata)問題は、つまり、私は、適切な次のステップに前進し、元のコントローラ/アクションに戻って各フォームを投稿しますすべての場合において

答えて

3

を要求された投稿のURLのまま私のURL ...です

[HttpGet] 
public ActionResult StepOneNameHere() { 
    StepOneModel model = new StepOneModel(); 

    // Populate any bits on the model... 
    return View(model); 
} 

[HttpPost] 
public ActionResult StepOneNameHere(StepOneModel model) { 
    // Validation 

    if (ModelState.IsValid) { 
     // You can add logic to choose the next step, for example if they have 
     // selected an option that requires an additional step in the wizard or 
     // if you can skip a step in the wizard 
     return RedirectToAction("StepTwoNameHere"); 
    } else { 
     return View(model); 
    } 
} 
+0

+ 1 - sohnee - 次のステップの名前をパラメタとして送ることも有用かもしれません。すなわち、 'Public ActionResult StepOneNameHere(StepOneModel model、string nextStepActionName){}' –

+0

@Jim - これは有効な提案です。これは、フレームワークのどの部分を決定したいかによって異なります。私は私の見解がその決定を下すことを決して夢にも思いませんので、私はモデルを見て、次のステップを実行する必要があると判断します。おそらく、アクションメソッドではなく、ウィザードヘルパーです。 – Fenton

+0

こんにちはSohnee、あなたの提案は、私が避けようとしていたリダイレクト魔女をする必要があります。それはいい練習ですか?それでも、私はアクションにモデルを渡すことはできません、私はセッションにそれを置く必要があります。私が間違っている? – TiagoDias

関連する問題