モデルバインダーのオーバーライドを書きました。MVC 5モデルバインダーオーバーライド
public override object BindModel(Controller context, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
object returnVal = null;
if (value == null)
returnVal = base.BindModel(controllerContext, bindingContext);
else
{
/* custom logic here that never seems to get called.
returnVal = something();
*/
}
return returnVal;
}
また、私のコントローラの1つにAJAX要求を行うjavascriptサービス(Angular)もあります。
AJAX要求は、intのコレクションをポストしようとします。私はモデルのバインダーをステップしてみました。value
は常にnullです。そしていくつかの魔法によって、base.BindModel()
は私のコレクションを正しいC#オブジェクトにバインドすることができます。
この問題は、else
ブロックが呼び出されないため、カスタムバインダーを使用できないという問題があります。 ValueProvider
を使用する以外にも値を取得できる別の方法はありますか?
私はこのカスタムバインダーが正しく動作する前に(間違っているかもしれないメモリから)信じています。私は最近4.5から5.2に更新しました。この動作を変更した可能性のある更新されたものはありますか?