4

Aspで最初のアプリケーションを開発しています。Asp.NETMVC3環境を使用しています。単一のパラメーターを持つコントローラーアクションがあります。このパラメーターのタイプは複雑なオブジェクトです。

public ActionResult MyAction(ComplexObj obj) {
    //TODO: using obj
}

ModelBinderクラスを使用しています。しかし、BindModel関数とCreateModel関数のどちらをオーバーライドする必要があるの​​わかりません。

これらの2つの関数の違いと、それらがルーターによって正確に使用される場合の違いは何ですか。

ありがとう !

4

1 に答える 1

6

これらの2つの関数の違いと、それらがルーターによって正確に使用される場合の違いは何ですか。

BindModelは、モデルバインディングプロセスのすべての作業を実行するメインメソッドでありCreateModel、渡されたタイプに基づいてモデルのインスタンスを提供するためにメソッドを呼び出す方法です。このメソッドは、モデルタイプがまたはまたは単純なモデルでCreateModelあるかどうかをチェックし、最後に、を呼び出してインスタンスを返します。dictionarylist

Activator.CreateInstance(typeToCreate);

通常、BindModelメソッドをオーバーライドする必要があります。要件を指定しない限り、どちらをオーバーライドするかを指定するのは困難です。モデルインスタンスの作成方法のみをオーバーライドするだけの場合は、に進む必要がありますCreateModel

于 2012-06-23T16:14:53.423 に答える