2009-03-16 10 views
0

複合アクションパラメータのモデルバインディングを無効にする属性はありますか?複雑なアクションパラメータのasp.net MVCのバイパスモデルバインダ?

私のシナリオは次のとおりです。私はSQLにLinqを使用していますが、生成されたクラスはインターフェイスを実装しています。たとえば、IUser。私のコントローラのアクションの中にはIUserのパラメータを受け入れるものがあり、私のビューの中にはIUserのモデルをバインドするものもありますが、デフォルトのモデルのバインダではそれを構築したくありません。私はそのためにアクションフィルターを使用します。この背後にあるアイデアは、アクションがユーザーの詳細を必要とする場合、アクションフィルターはアクションが呼び出される前にデータベースから取得するということです。

DefaultModelBuilderが起動したときに発生するエラーを回避するために、私はCreateModelからnullを返すnullモデルのバインダーを作成しました。

ModelBinderDictionary binders = System.Web.Mvc.ModelBinders.Binders; 
binders[typeof(IUser)] = new NullModelBinder(); 

答えて

0

アーキテクチャをフォローし、アクションフィルターの動作を行うIUserバインダーを作成する方が簡単でしょうか?現時点では、アクションフィルタが意図していないことを行うように変形されています。その過程で、具体的に達成しようとしている拡張ポイントも無視しています(特定の方法でパラメータのインスタンスを作成してください) 。

カスタムバインダーではなく、アクションフィルターにIUserを作成する理由はありますか?

関連する問題