【发布时间】:2016-04-14 23:10:24
【问题描述】:
所以我尝试使用 RangeValidator 来确保 Int64 的最小值和最大值得到验证。但是,我似乎拥有的唯一或最接近的选择是 Double。
Dim Range As New RangeValidator
Range.ControlToValidate = "..."
Range.Type = ValidationDataType.Double
Range.MinValue = Int64.MinValue.ToString
Range.MaxValue = Int64.MaxValue.ToString
我不想使用自定义验证器。我想我可以使用一些疯狂的正则表达式..但只是想了解为什么我不能这样做。
例如 Int64 的最大值为:
9223372036854775807
但这验证了:
9223372036854775808
9223372036854775810
9223372036854775899
如果我跳一个更大的数字,它不会验证:
9223372036854799999
我假设这是由于 Double 发生了一些转换。
我确实看到 System.Configuration 中有一个 LongValidator,但我试图尽可能避免创建 CustomValidator 类型,并且它是不同的验证类型,因为它不适合像 RangeValidator 那样使用。
所有这些都是为了学习目的而不是其他任何事情。我知道我可以跳过其他障碍,但希望能看得更清楚。
也标记了 C#。忽略我的 vb.net 示例..根据问题并不重要。将转换任何代码。
【问题讨论】:
-
@Sam 看到了那个,只是我认为他们实际上并没有遇到我遇到的问题。他们最终使用了正则表达式和范围,但 Double 类型仍然存在问题。
-
:) 很公平,恐怕我对它的验证原因不够了解,但我假设你在使用 double 类型时走在正确的轨道上..
-
@Sam 快把我逼疯了。我只是希望微软能在验证器中添加更多的数据类型。 :)
标签: c# asp.net vb.net validation