ビューがより複雑になるにつれて考慮したいアプローチの 1 つは、モデルの使用を入力フィールドに予約し、ViewData を使用してビューがレンダリングする必要がある他のすべてをサポートすることです。
これを支持するには、少なくともいくつかの議論があります。
一部のデータが存在する必要があるマスターページがあります (たとえば、ヘッダー内の StackOverflow ユーザー情報のようなもの)。サイト全体に ActionFilter を適用すると、すべてのアクションの後で ViewData にこの情報を簡単に入力できます。モデルに配置するには、サイト内の他のすべてのモデルをベース モデルから継承する必要があります (これは最初は悪くないように思えるかもしれませんが、すぐに複雑になる可能性があります)。
投稿されたフォームを検証しているときに、検証エラーが発生した場合は、モデルを (無効なフィールドと共に) ビューに再バインドして検証メッセージを表示することをお勧めします。入力フィールドのデータはポストバックされ、モデルにバインドされるため、これは問題ありませんが、ビューに再入力する必要があるその他のデータについてはどうでしょうか? (例: ドロップダウン リストの値、情報メッセージなど) これらはポストバックされず、ポストバックされた入力値の「周辺」でこれらをモデルに再設定するのが面倒になる可能性があります。多くの場合、ViewData にビュー データを設定するメソッドを使用する方が簡単です。
私の経験では、このアプローチがうまく機能することがわかりました。
そして、MVC3 では、動的な ViewModelにより、文字列のインデックス作成が不要になります!