アクションメソッドに入る特定のパラメーターに対して呼び出されるカスタムモデルバインダーがあります。
public override ActionResult MyAction(int someData, [ModelBinder(typeof(MyCustomModelBinder))]List<MyObject> myList ... )
これはうまく機能します。バインダーは期待どおりに呼び出されます。ただし、 Request.Form コレクションにあるいくつかの追加の値に対して、既定のモデル バインダーを呼び出したいと考えています。フォーム キーは次のように命名されます。
dataFromView[0].Key
dataFromView[0].Value
dataFromView[1].Key
dataFromView[1].Value
IDictionary をアクション メソッドのパラメーターとして追加すると、既定のモデル バインダーはこれらの値を IDictionary に適切に変換します。
ただし、これらの値をモデル バインダー レベルで (上記の元の List オブジェクトと共に) 操作したいと考えています。
BindModel()
デフォルトのモデル バインダーを取得して、カスタム モデル バインダーのメソッドでフォームの値からこのディクショナリを作成する方法はありますか?
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
//Get the default model binder to provide the IDictionary from the form values...
}
bindingContext.ValueProvider.GetValue を使用しようとしましたが、IDictionary にキャストしようとすると常に null を返すようです。