Thomas & George、ModelBindingContextに値プロバイダを設定する必要があります。以下は、タイプを作成し、デフォルトモデルのバインダーを使用してオブジェクトを水和させるHomeController Indexアクションのコードの例です。これは単なる単純化されたバージョンです。私のプロダクションコードでは、実際にタイプのコントローラアクションにパラメータを取り込み、そのタイプを動的に作成し、複数のタイプを1つのコントローラアクションに送信する場合に効果的です。 ValueProviderとControllerContextはコントローラのプロパティです。
HomeModel test = new HomeModel();
ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => test, test.GetType());
ModelBindingContext modelBindingContext = new ModelBindingContext { ModelMetadata = metadata, ValueProvider = ValueProvider};
DefaultModelBinder defaultModelBinder = new DefaultModelBinder();
defaultModelBinder.BindModel(ControllerContext, modelBindingContext);
私はこの記事を読んでいて、それはひどく時代遅れです –
実際には私はそれが時代遅れだとは思わない。おそらく最初のもののいくつかが、ユニットテストコードはまだまだ機能しますね。 – ThomasArdal
ValueProviderDictionaryは廃止されており、そこから悪化しています。 Stuffはまったく同じようにバインドされておらず、ModelTypeのようなものはまったく設定できません。このパターンでは私のシナリオ(モックDBからモデルをロードするか、新しいモデルを作成する)を得ることができませんでした。 –