显示多个asp验证器的单个错误

时间:2012-12-27 10:21:25

标签: asp.net validation

我在asp中有一个带有3个不同验证器的文本框控件。每个验证器都从服务器获取其错误消息,每个验证器验证不同的东西。 我的问题是,对于某些值,两个或更多验证器正在触发,我收到的错误消息多了一个。 我想做一些优先级功能,这意味着如果第一个验证器正在触发,则其他两个不会。有没有办法让验证器表现得那样?

我添加了一些代码示例:

<asp:RequiredFieldValidator ID="cvRequired" runat="server" Display="Dynamic"
    ControlToValidate="txtBox" />
<asp:RegularExpressionValidator ID="cvFormat" runat="server" Display="Dynamic"
    ControlToValidate="txtBox" ValidationExpression="^([A-Za-z])+$" />
<asp:CustomValidator ID="cvCustom" runat="server" Display="Dynamic"
    ControlToValidate="txtBox" ClientValidationFunction="validateFunction" />

如果所需的验证器无效,我希望格式验证器和自定义验证器不会触发(实际上,我只是希望它们不显示错误消息)。

正如我所说,错误消息来自服务器,因此我无法将它们真正加入一个自定义验证器。此外,“validateFunction”位于另一个js文件中(供重用)。

3 个答案:

答案 0 :(得分:0)

您需要考虑的几个逻辑选项,

(txtPhone) having three validators.
1.RangeValidator, 2.CustomValidator 3.Regexvalidator

说,验证后(检查验证失败/通过后返回的内容)并对此采取行动。

 if(rangevalidator1 != null)
{
 ...somecode...
} 

我建议你使用javascript ..

答案 1 :(得分:0)

您可以使用单个自定义验证器进行所有三次验证,并根据需要将代码置于条件中。

<asp:CustomValidator runat="server" ID="cstmStartDateValidater"                     
                        ToolTip="Start date cannot be greater than equal to end date/time or less than current date/time" 
                        ErrorMessage="*" ControlToValidate="txtStartDateTime"
                     ForeColor="Red" ValidationGroup="vlgMessage" SetFocusOnError="true" 
                        onservervalidate="cstmStartDateValidater_ServerValidate" ></asp:CustomValidator>
<。>页面中的

protected void cstmStartDateValidater_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (CompareStartDate())
        {
            args.IsValid = true;
        }
        else
        {
            args.IsValid = false;
        }
    }

您可以使用以下链接获取更多信息:

MSDN
Code Project

希望这些能帮到你。

答案 2 :(得分:0)

使用ajax控件工具包中提供的ValidatorCalloutExtender控件。 在每个控件上放置一个单独的ValidatorCalloutExtender,您希望对其进行验证。