现在我有一个带有属性的 ViewModel double Maximum
。在视图方面,它被保存在一个隐藏的输入中,以帮助进行不显眼的验证。
发布支持值时,绑定会静默失败。我不得不在这一行上放一个断点:
if(ModelState.IsValid)
并检查哪个ModelState
属性有错误。然后我发现这个double Maximum
属性有以下错误消息:
从类型“System.String”到类型“System.Double”的参数转换失败。有关更多信息,请参阅内部异常。
在HTML
使用Firebug检查的视图中,我可以看到隐藏的输入具有以下值:
1.79769313486232E+308
正确地表示double.MAX常数。
我从2005 年 1 月(大约 9 年前)发现了这篇 Scott Hanselman 的帖子,其中涉及类似的内容:
为什么在使用 Double.Parse 时不能 Double.Parse(Double.MaxValue.ToString()) 或 System.OverloadExceptions
我的应用程序配置有问题还是不支持这种直接从string
back to的转换?double
我认为它应该没有错误地处理它。
注意:我尝试使用 Firebug 更改隐藏的输入值,并按照 Scott 在他的帖子中提到的那样做:我从最后一位数字中减去 1...
1.79769313486231E+308
并再次回发只是为了发现模型绑定器这次正确处理了它。