5

特定のコントローラーアクションメソッドまたはそのコントローラー全体に対して、カスタムモデルバインダーの範囲を制限すると便利です。ハンゼルマンは、カスタムモデルバインダー登録の代替場所を暗示する文を書きましたが、考えを終わらせることはなかったようです。

Global.asaxに登録することで、このカスタムモデルバインダーにすべての日時を管理させることができます。

コントローラーシステムのより狭い範囲でこれらの登録を行うことは可能ですか?もしそうなら、Global.asax MvcApplicationの外でそうすることを避ける理由はありますか(例えば、パフォーマンス上の理由)?

4

1 に答える 1

6

あきらめる前にたどり着かなかったこの質問のために開いたタブを閉じていると、誰かが答えを見つけました。ModelBinderAttributeビュー モデルに を割り当てることができます。

[ModelBinder(typeof(SomeEditorModelModelBinder))]
public class SomeEditorModel {
    // display model goes here
}
public class SomeEditorModelModelBinder : DefaultModelBinder {
    // custom model binder for said model goes here
}

私が探していたものとはまったく異なりましたが、コントローラーまたはコントローラーメソッドに登録するよりもさらに具体的です。

アップデート

より良い解決策を指摘してくれた Levi のコメントに感謝します。MVC アクション メソッドでカスタム モデル バインダーを使用してオブジェクトを直接使用する場合は、そのメソッドのパラメーターをModelBinderプロパティで単純に装飾できます。

public ActionResult SomeMethod([ModelBinder(typeof(SomeEditorModelBinder))]SomeEditorModel model) { ... }
于 2010-06-14T22:04:40.650 に答える