2

ここに、MVC の複数ページの「ウィザード」コントロールの簡単な解決策があります。

http://www.highoncoding.com/Articles/647_Creating_Wizard_Using_ASP_NET_MVC_Part_1.aspx

http://www.highoncoding.com/Articles/652_Creating_Wizard_in_ASP_NET_MVC_Part_2.aspx

モデルはいくつかの手順で設定され、非表示フィールドを使用してページ間でデータを永続化します (ViewState に多少似ています)。ただし、MVC 2 RC2 のリリースにより、検証メカニズムが「入力検証」から「モデル検証」に変更されました: http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model -検証-in-aspnet-mvc.html

モデルの一部しか入力されないため、「ウィザード」の最初のページは検証されません。(残りは以降のステップで入力されますが、必須フィールドが存在する可能性があるため、最初のページの検証中に検証エラーが表示され、ユーザーは続行できません)。

この「ウィザード コントロール」の実装を MVC RC2 に合わせて変更する方法はありますか、それともロジック全体を再考する必要がありますか? モデルを設定するための複数ページの「ウィザード コントロール」を作成するためのより良いパターンはありますか?

4

2 に答える 2

3

リストされた記事を簡単に読みました。問題は、編集のために両方の画面にドメイン オブジェクト (デモの顧客) を渡していることだと思います。顧客の半分は最初の画面で編集され、残りの半分は次の画面で編集されます。

ここで役立つパターンは、実際のモデル (顧客) をプレゼンテーションに渡すのではなく、(IMHO) 「ビュー モデル」のみを渡すことです。これは、各ビュー (この場合はウィザードのステップ) が独自のモデルを持つことを意味します。CustomerNameViewModel と CustomerAddressViewModel は、リストされたチュートリアルに適したオブジェクトである可能性があります。これは、検証のために戻ってきたときに、各オブジェクトに完全にデータが入力されることを意味します。オブジェクトが適切に検証されたら、顧客オブジェクトを埋めることができます。ウィザードの最後で顧客オブジェクトが完成したら、顧客オブジェクトを永続化します。

于 2010-02-08T16:31:09.093 に答える
1

http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/をチェックしてください。Steven は、ActionFilter を使用して部分的なビューの検証を行う方法を示します。

于 2010-04-10T13:26:06.657 に答える