针对字段的多次验证

时间:2012-10-29 12:10:32

标签: asp.net vb.net validation

我目前想知道某个字段的服务器端验证。

例如,我有一个不能为空的字段,必须是数字&必须低于999999。

要验证的示例代码为:

 If checkNumeric(txtBaseSalary.Text) = True Then
            txtBaseSalary.CssClass = "text"
        Else
            x += 1
            step_4 += 1
            txtBaseSalary.CssClass = "text error"
 End If

If val(txtBaseSalary.Text) = 0 or val(txtBaseSalary.Text) > 999999  Then
            x += 1
            step_4 += 1
            txtBaseSalary.CssClass = "error text"
        Else
            txtBaseSalary.CssClass = "text"
End If

但是我确定你已经发现了这个问题,如果它没有通过第一次验证但是通过第二次验证错误量(step_4)将会上升,但是如果通过第二次则会清除可视化表示。

是否有人对没有嵌套if语句的字段进行多次验证?

同样,请提供适用于需要多次验证的任何情况的解决方案,而不仅仅是这种方式可以验证我发布的一种情况。

3 个答案:

答案 0 :(得分:3)

你可以

  • 使用CustomValidator ValidateEmptyText=true和代码检查您的情况或
  • 使用RequiredFieldValidator检查空文本 a CompareValidator,检查给定范围内的数值。

<asp:CompareValidator runat="server" 
    id="cmpNumbers" 
    controltovalidate="txtBaseSalary" 
    valuetocompare="999999"
    operator="LessThan" 
    type="Integer" 
    errormessage="The number should be smaller than 999999!" /><br />

您可以使用Ajax ValidatorCalloutExtender在出错时应用CSS。另一种选择是使用JQuery

答案 1 :(得分:1)

最好能够创建数字文本框控件。它将避免检查checkNumeric。

答案 2 :(得分:1)

对此表达式进行单一正则表达式比较

^([0-9]{1,6})$

将强制它为数字,介于0和999999之间。

您可以使用您编写的方法(因为您似乎想要增加'x'和'step_4')

using System.Text.RegularExpressions;
Regex r = new Regex("^([0-9]{1,6})$");
Match m = r.Match(text);
if (m.Success)...  

MSDN Documentation

或者您可以使用开箱即用的验证器:

 <asp:RegularExpressionValidator 
   ID="regexpName" runat="server"     
   ErrorMessage="error text." 
   ControlToValidate="txtName"     
   ValidationExpression="^([0-9]{1,6})$" />

More MSDN Documentation