我目前想知道某个字段的服务器端验证。
例如,我有一个不能为空的字段,必须是数字&必须低于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语句的字段进行多次验证?
同样,请提供适用于需要多次验证的任何情况的解决方案,而不仅仅是这种方式可以验证我发布的一种情况。
答案 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)...
或者您可以使用开箱即用的验证器:
<asp:RegularExpressionValidator
ID="regexpName" runat="server"
ErrorMessage="error text."
ControlToValidate="txtName"
ValidationExpression="^([0-9]{1,6})$" />