我在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文件中(供重用)。
答案 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;
}
}
您可以使用以下链接获取更多信息:
希望这些能帮到你。答案 2 :(得分:0)
使用ajax控件工具包中提供的ValidatorCalloutExtender控件。 在每个控件上放置一个单独的ValidatorCalloutExtender,您希望对其进行验证。