double
モデルのタイプのプロパティに対応するテキストボックスの入力を検証しようとしています。ユーザーが入力した場合"foo"
、エラーを表示できるように、それについて知りたいと思います。ただし、ValueProvider
は値をサイレントにドロップしています(エラーはに追加されませんModelState
)。
通常の送信では、フォーム"2"
に対応するテキストボックスに入力しmyDouble
て送信します。検査controllerContext.HttpContext.Request.Form
するとmyDouble=2
、他の正しい入力の中でも、がわかります。bindingContext.ValueProvider.GetValue("myDouble") == 2
、 予想通り。bindingContext.ModelState.Count == 6
とbindingContext.ModelState["myDouble"].Errors.Count == 0
。_ すべてが良好で、モデルは期待どおりにバインドされます。
次に、フォームに対応するテキストボックスに「foo」と入力しmyDouble
て送信します。調べcontrollerContext.HttpContext.Request.Form
てmyDouble=foo
みると、それは私が期待していたことです。ただし、bindingContext.ValueProvider.GetValue("myDouble") == null
(bindingContext.ModelState.Count == 5
正確な数は重要ではありませんが、以前より1つ少なくなっています)。を見ると、送信されなかっValueProvider
たかのようmyDouble
になり、モデルのバインドは送信されなかったかのように発生します。これにより、不良入力と入力なしを区別することが困難になります。
これはの予想される動作ValueProvider
ですか?ValueProvider
カスタムを実装せずに変換が失敗したときにレポートを取得する方法はありValueProvider
ますか?ありがとう!