我不能把这个CustomValidator同时验证两个TextBox

时间:2017-01-25 11:44:03

标签: c# asp.net validation

我有两个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字符,我希望错误出现(一次),但我明白了:

Error in Browser

寻求帮助!

0 个答案:

没有答案