2011-02-03 4 views
1

現在のMVC3プロジェクトでは、入力用に複数のページを持つモデルがあります。オブジェクトは必須フィールドで設定されていますが、別のページにあります。つまり、ModelState.IsValidの単純なチェックはできません。代わりに、現在のページに必要なすべての値があるかどうかを確認してから、次のユーザーへのアクセスを許可します。これは理想的ではないようです。複数のページにわたるMVCモデル検証

私が気に入らない主なものの1つは、最初のページ以外のフィールドに必須フィールドを指定すると、ポストバックや全体的な検証の失敗が既に発生しているため、次のページの必須フィールドは既にマークされているユーザーがページに行ったことがないにもかかわらず、エラー状態になります。

複数の入力ページに必須フィールドがあるエンティティの検証にはベストプラクティスがありますか?

答えて

3

ドメインモデルの代わりにビューモデルを使用する必要があります。ドメインモデルをウィザードの各ステップごとに複数のビューモデルに分割することができます。ここにはanother answerがあります。

+0

+1。 MVCだけでなく、DDD関連のパラダイムでも、ビューモデルはあまり理解されていない構造の1つです。多くの人がエンティティに両方の役割を果たすように強制しようとしますが、エンティティ以外のアプローチよりも大きな頭痛になることがよくあります。 –

+0

あなたは応答してくれてありがとう、私はビューモデルをチェックアウトします。実際に私が探している答えと思われる。 –

+0

よろしくお願いします。私はポストアクションを作成しています。つまり、各ViewModelに対してCreateアクションが必要なのでしょうか? –

0

これは、すべてのページに別々のViewModelを使用することをお勧めします。また、ViewModelでEntityクラスを直接使用することはお勧めしません。

別々のViewModelsを使用すると、必要に応じて属性ベースの検証を調整できます。 ViewModelとエンティティをマッピングする方法を見つける必要があるという点で、複雑になります。

+0

よろしくお願いします。これはまさに私が必要とするもののように見えます。 –