私の理解では、ViewModelパターンは、関連するすべてのデータをViewに渡すように設計されています。これは、1)ビューがデータの取得やアプリケーションロジックを実行してはならず、2)タイプの安全性、コンパイル時のチェック、およびエディターのインテリセンスを可能にするためです。テンプレートを表示します。
動的な式は実行時に定義されるので、これは2)の機能がまったくないことを意味しますか?
私の理解では、ViewModelパターンは、関連するすべてのデータをViewに渡すように設計されています。これは、1)ビューがデータの取得やアプリケーションロジックを実行してはならず、2)タイプの安全性、コンパイル時のチェック、およびエディターのインテリセンスを可能にするためです。テンプレートを表示します。
動的な式は実行時に定義されるので、これは2)の機能がまったくないことを意味しますか?
既存の機能が失われることはありません。Model
プロパティにアクセスしたときに指定したタイプになるように、厳密に型指定されたビューを引き続き使用できます。追加されるのは、ViewDataディクショナリ内のアイテムにアクセスするためのより短い方法だけです。
次の代わりに
ViewData["MyData"]
あなたが持つことができます
View.MyData
型安全性を実際に持ったことは一度もないので、型安全性を失うことはないことに注意してください。前者の場合、キーは文字列(辞書に存在するかどうかは不明)であり、値はオブジェクトであるため、キャストしない限り、それを使用してそれほど多くのことを行うことはできません。後者では、インテリセンスも得られず、戻り値を何か有用なものにキャストする必要があります。
実際、の実装はView.MyData
単にプロパティ名( "MyData")を取り、ViewDataディクショナリからの値を返します。
おそらく、失うことの1つは、キー名に正当なC#識別子ではないスペースやその他の文字を含めることができることです。