我有两个RegularExpressionValidator,分别用于一个文本框。他们基本上验证了TextBox是否只有数字。如果,他们有非数字输入,他们会抛出错误。
<asp:RegularExpressionValidator ID="RegularExpressionMontanteMin" runat="server"
ErrorMessage="O campo 'Total com Imposto' deve ser numérico." ControlToValidate="tbMontanteMin"
CssClass="error errorImage" Display="Dynamic" ValidationExpression="^[+-]?[0-9]{1,11}(?:\,[0-9]{1,2})?$"
ValidationGroup="PesquisarFaturas">
</asp:RegularExpressionValidator>
<asp:RegularExpressionValidator ID="RegularExpressionMontanteMax" runat="server"
ErrorMessage="O campo 'Total com Imposto' deve ser numérico." ControlToValidate="tbMontanteMax"
CssClass="error errorImage" Display="Dynamic" ValidationExpression="^[+-]?[0-9]{1,11}(?:\,[0-9]{1,2})?$"
ValidationGroup="PesquisarFaturas">
</asp:RegularExpressionValidator>
但是,由于它们具有相同的ErrorMessage,我想更改它并放置一个CustomValidator来同时验证两个TextBoxes。所以我做到了:
<asp:CustomValidator ID="CustomValidatorTotalComImposto" CssClass="error" Display="Dynamic" runat="server"
ErrorMessage="O campo 'Total com Imposto' deve ser numérico." OnServerValidate="ValidarTotalComImposto_ServerValidate" ValidationGroup="PesquisarFaturas" />
我试图像这样验证服务器端:
protected void ValidarTotalComImposto_ServerValidate(object sender, ServerValidateEventArgs e)
{
bool TotalMinInvalido = false;
bool TotalMaxInvalido = false;
if (e.IsValid)
{
if (String.IsNullOrEmpty(tbMontanteMin.Text) && String.IsNullOrEmpty(tbMontanteMax.Text))
{
e.IsValid = true;
}
else
{
if (!String.IsNullOrEmpty(tbMontanteMin.Text))
{
if (!IsDigitsOnly(tbMontanteMin.Text))
{
TotalMinInvalido = true;
}
}
if (!String.IsNullOrEmpty(tbMontanteMax.Text))
{
if (!IsDigitsOnly(tbMontanteMax.Text))
{
TotalMaxInvalido = true;
}
}
if (TotalMinInvalido || TotalMaxInvalido)
{
e.IsValid = false;
}
else
{
e.IsValid = true;
}
}
}
}
我测试了它。如果我只写两个文本框中的一个(仅输入alfanumeric字符),则会出现错误。但是,如果我在两个文本框上都写了alfanumeric字符,我希望错误出现(一次),但我明白了:
寻求帮助!