Global.asax以外のどこかにカスタムモデルバインダーを登録できますか?
-
27-09-2019 - |
質問
特定のコントローラーアクションメソッドまたはそのコントローラー全体のみのカスタムモデルバインダーの範囲を制限するのが便利です。 ヘンゼルマン カスタムモデルバインダーの登録のための代替場所を暗示したが、考えを終わらせることはなかったような文章を書きました。
あなたはできる また このカスタムモデルバインダーは、Global.asaxに登録することにより、すべてのデータタイムを担当します。
これらの登録をコントローラーシステムのより小さな範囲で行うことは可能ですか?もしそうなら、Global.ASAX MVCApplication(例えば、パフォーマンスの理由)の外でそうすることを避ける理由はありますか?
解決
あきらめる前に到達していなかったこの質問のためにタブを閉じていたとき、私は見つけました 答えを持っている人. 。 aを割り当てることができます 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) { ... }
所属していません StackOverflow