2

DefaultModelBinder と、それがオブジェクト型のプロパティを持つモデルのバインドをどのように処理するかをよりよく理解するのを手伝ってくれる人はいますか?

コードをダウンロードしてトレースしてみましたが、まだ少し頭を悩ませています。

次のようなモデルがあるとします。

public class MyModel{
    public object MyProperty{ get; set; }
}

そして、私のフォームがすべて正しく生成されたと仮定します (例: name="MyModel.MyProperty")

MyProperty が実際に特定の型のインスタンスに設定されているさまざまなケースではどうなりますか?

私の場合、DefaultModelBinder からカスタム バインダーを派生させ、CreateModel() をオーバーライドして、MyProperty が正しい Type に設定された MyModel を返します。

MyProperty を文字列に設定すると、何らかの理由で DefaultModelBinder::BindProperty() が単なる文字列ではなく、フォーム フィールドの内容を含むサイズ 1 の string[] を返すことに気付きました。なんで?

MyProperty がより複雑なタイプの場合、フォーム フィールドがすべて適切に命名されていても (例: name="MyModel.MyProperty.FirstName")、バインドがまったく機能していないようです。

このような複雑な/抽象的なモデル バインディング シナリオを扱った人はいますか? より良い方法はありますか?(私はそれが奇妙であることを知っていますが、実行時まで実際にどの Type であるかを知ることができないため、MyModel の MyProperty をオブジェクトにする必要があります)

4

1 に答える 1

0

インターフェイスの使用を検討し、カスタム バインダーを使用してください。これは可能ですか?その場合、実行時に不明なオブジェクト タイプはありません。

于 2011-07-24T23:57:00.407 に答える