【问题标题】:RangeValidator is allowing several decimal pointsRangeValidator 允许多个小数点
【发布时间】:2014-07-03 14:07:31
【问题描述】:

如果我在下面的 RangeValidator 中输入值 1.2.1,它会验证 OK

<asp:RangeValidator ID="RangeValidator8" runat="server"
    ControlToValidate="TextBoxSAPPlannedHrs" 
    Display="None" ErrorMessage="Must be a valid number 0-999"
    MaximumValue="999" MinimumValue="0"></asp:RangeValidator>

如何将其归类为有效范围。 1.2.1 不是有效数字...

【问题讨论】:

  • 我认为小部件使用string 作为数据类型。尝试将Type="Double"Type="Int" 添加到标签中。
  • 当然是。这取决于当前的文化。这是 121.0:double.Parse("1.2.1", new CultureInfo("de-DE"));。因此,如果您当前的文化使用点作为组分隔符,则它是一个有效数字。

标签: asp.net .net validation rangevalidator


【解决方案1】:

默认情况下,如果未指定 Type,我认为它在进行比较之前使用 String 作为默认转换类型。

将您的控件更改为以下内容:

<asp:RangeValidator ID="RangeValidator8" runat="server" ControlToValidate="TextBoxSAPPlannedHrs" 
    Display="None" ErrorMessage="Must be a valid number 0-999"  MaximumValue="999"
    MinimumValue="0" Type="Integer"></asp:RangeValidator>

这将导致在进行比较之前将输入转换为指定的类型 (Integer)。如果转换失败,验证将失败。

MSDN:

值在之前被隐式转换为指定的数据类型 进行比较。如果数据转换失败,数据验证 失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多