我正在尝试验证与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?谢谢!