1

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

例如,我有一个不能为空的字段,必须是数字并且必须低于 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 语句的情况下对一个字段进行多次验证的实现?

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

4

3 回答 3

3

你可以

  • 使用CustomValidatorwith ValidateEmptyText=true和代码来检查您的状况或
  • 使用 aRequiredFieldValidator检查空文本aCompareValidator检查给定范围内的数值。

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

您可以使用 AjaxValidatorCalloutExtender在错误时应用您的 CSS。另一种选择是使用JQuery

于 2012-10-29T12:17:58.510 回答
1

更好的是,您可以创建一个数字文本框控件。它将避免检查 checkNumeric。

于 2012-10-29T12:13:54.860 回答
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 文档

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

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

更多 MSDN 文档

于 2012-10-29T12:58:02.997 回答