.Net中的分叉验证错误消息

时间:2010-01-14 16:54:37

标签: asp.net validation

在ASP.Net中,如何将验证消息限制为仅一个?

规则:用户必须输入0到1000之间的数字。

当前[不受欢迎]行为:

用户类型1001:验证者说“请输入1000以下的非负数” 用户类型-1:验证者说“请输入1000以下的非负数”

所需行为:

用户类型1001:验证者说“请输入1000以下的数字”
用户类型-1:验证者说“请输入非负数”

换句话说,我如何使用两个asp:RangeValidators,其不允许的值相交但只打开所需的值?我不想在服务器上处理ServerValidate事件。

没有客户端代码是否可行?

3 个答案:

答案 0 :(得分:1)

你的'期望'行为有可能有些恼人:

  • 用户输入1001
  • App告诉用户“请输入1000以下的数字”
  • 公平,用户认为,并输入-1(你会同意“1000以下的数字”)
  • 应用程序然后告诉用户“请输入非负数”
  • 为什么你没有提到它开始!?,用户认为自己

我要问的是:现有行为有什么问题,用户被告知实际规则?

答案 1 :(得分:1)

您可以使用CompareValidator检查该值是否小于零,并使用RangeValidator检查该值是否介于-2147483647和1000之间。

<asp:CompareValidator Id="IsNotNegativeValidator"
                      ControlToValidate="TextBox1"
                      ValueToCompare="-1"
                      Operator="GreaterThan"
                      Type="Integer"
                      Text="Please put in a non-negative number"
                      runat="server"/>

<asp:RangeValidator   Id="IsLessThanOneThousandValidator"
                      ControlToValidate="TextBox1"
                      MinimumValue="-2147483647"
                      MaximumValue="1000"
                      Type="Integer"
                      Text="Please put in a number beneath 1000"
                      runat="server"/>

(在这种特殊情况下,它看起来像一个RangeValidator,其中包含“请输入0到1000之间的数字”这一消息,可以减少用户的挫败感。)

答案 2 :(得分:0)

我发现这样做的最好方法是独占使用RegularExpressionValidator。您可以使用适当的正则表达式验证任何内容。