设置asp.net验证控件的顺序

8

我正在使用3个验证器来验证文本框,但是当输入无效值时,所有验证器都会被触发。我希望这些验证器按特定顺序工作,以便用户可以逐一解决这些错误。

<asp:TextBox ID="txt_temp" runat="server"></asp:TextBox>                                                  

<asp:CompareValidator ID="cv_txt_temp" runat="server" CssClass="error" ControlToValidate="txt_temp" ValueToCompare="0" Type="Double" Operator="GreaterThanEqual" ValidationGroup="insert" SetFocusOnError="true" ErrorMessage="Must be valid value" Display="Dynamic"></asp:CompareValidator>

<asp:RegularExpressionValidator ID="rev_txt_temp" CssClass="error" SetFocusOnError="true"
 runat="server" ErrorMessage="Value upto 1 decimal place" Display="Dynamic" ControlToValidate="txt_temp" ValidationExpression="\d+(?:(?:\.|,)\d{0,1})?" ValidationGroup="insert"></asp:RegularExpressionValidator>


<asp:RangeValidator ID="rv_txt_temp" Display="Dynamic" runat="server" SetFocusOnError="true" ValidationGroup="insert" ControlToValidate="txt_temp" Type="Double" CssClass="error"></asp:RangeValidator> 

请告诉我们您正在为文本框使用哪些验证器。 - Shiridish
嗨,我发布了代码,请检查它,当我在文本框中输入1.0.0时,它会触发。 - Arjun Sharma
1
考虑使用CustomValidator控件。 您需要自己编写验证逻辑,但您将完全掌控要显示哪些错误以及以什么顺序显示它们。 - Michael Liu
5个回答

5
您添加的验证器将自动添加到Page.Validators集合中,按创建顺序排序。 验证运行按照它们在Page.Validators集合中出现的顺序进行,这意味着在aspx文件中显示的第一个验证器定义将出现在Page.Validators中的第一位。 如果要更改顺序,则唯一的方法是以您希望它们触发的顺序将所有验证器添加到页面中编辑: 在您的情况下,唯一的方法是使用CSS重叠验证器

嗨,Srinivas。但是当我输入1.0.0这样的值时,所有的都会同时触发。 - Arjun Sharma
嗨@srinivas,你能用例子解释一下吗? - Arjun Sharma

0
我的“设置验证顺序”的解决方案是: 在具有验证器的页面上: 1)我在aspx代码中将AutoEventWireup设置为false,并使用自定义验证器 2)我创建并调用验证函数,并为相关验证器设置“IsValid”:
 validCustom1.IsValid = Validation1(textbox1.Text);
 if (Page.IsValid)
     validCustom2.IsValid = Validation2(textbox2.Text);
 if (Page.IsValid)
     validCustom3.IsValid = Validation3(textbox3.Text);
 if (Page.IsValid)
 { 
     //Do somethink
 }
 else
 {
     //Do somethink else
 }

0

你可以尝试只使用 RegularExpressionValidator

<asp:RegularExpressionValidator ID="rev_txt_temp" CssClass="error" SetFocusOnError="true"   
 runat="server" ErrorMessage="Error.." Display="Dynamic" ControlToValidate="txt_temp"    
     ValidationExpression="^[1-9]\d*(\.\d{0,1})?$" ValidationGroup="insert"> 
</asp:RegularExpressionValidator>

如果你想要其他方式,请告诉我。


0

您可以使用自定义验证器、自定义 JavaScript 或掩码编辑验证器


0

您可以创建自定义验证。这需要一些时间,但您可以控制验证的顺序。 您还可以使用掩码文本框扩展程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接