我正在尝试验证与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
(确切的数字并不重要,但它比以前少一个)。查看ValueProvider
, 就好像myDouble
从未提交过,并且模型绑定就像没有提交一样。这使得很难区分错误输入和无输入。
这是预期的行为ValueProvider
吗?有没有办法ValueProvider
在转换失败而不实现自定义时进行报告ValueProvider
?谢谢!