3

私はDefaultModelBinder.BindModel()をオーバーライドするか、またはIModelBinder.BindModel()を実装する場合でも、私が遵守すべきセマンティクスを理解しようとしているMVC 3 source codeを読んできました。BindModel()の実装は何をすべきですか?

BindModel()が他のオブジェクトをその作業の完了後に残すべきかどうかは、私には不明です。 ValueProviderデータの解釈を表す値を返すことを想定していますが、どのような副作用があるはずですか?たとえば、

  • MVCは、メソッドが終了した後にBindModel()*に渡されたbindingContextの状態について期待していますか?
  • ModelMetadataでIModelBinder.BindModel()を設定する必要がありますか? (DefaultModelBinderは、BindModel()によって呼び出されるBindProperty()メソッドにプロパティメタデータを設定します)。
  • DefaultModelBinder.BindModel()を呼び出すと、ModelState.AddModelError()を呼び出すか、BindProperty特にDefaultModelBinderのデフォルトの動作を可能な限り活用したい場合)

DefaultModelBinderは、それはそれは(私がLiskov principleに違反することなく、何かを上書きすることはできませんように、すなわち、私が感じる)非常に危険な感じ何かを上書きせ、その配管に組み込まれているので、多くの意味を持っています。ドキュメンテーションの欠如は役に立たない。

答えて

0

カスタムバインディングが必要な場合は、IModelBinderインターフェイスを実装し、オブジェクトをビルドするために必要な作業を行います。

関連する問題