8

我正在使用 3 个验证器来验证 TextBox,但是当在 Textbox 中输入无效值时都会触发所有验证器。但是我希望这些验证器以特定的顺序工作,以便用户可以一一解决这些故障。

<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> 
4

5 回答 5

5

您添加的验证器会按照它们的创建顺序自动添加到Page.Validators 集合中。验证按照它们在 Page.Validators 集合中出现的顺序运行,这意味着在 aspx 文件中显示的第一个验证器定义首先在 Page.Validators 中。如果您想更改顺序,那么唯一的方法是让所有验证器按照您希望它们触发的顺序进入页面

编辑:在您的情况下,唯一的方法是使用 css 来重叠验证器

于 2013-01-25T06:16:20.410 回答
0

您可以创建自定义验证。这需要时间,但您可以控制验证的顺序。您还可以使用蒙版文本框扩展器。

于 2013-08-07T12:17:14.213 回答
0

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

于 2013-08-07T12:16:31.723 回答
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
 }
于 2015-02-06T19:54:55.043 回答
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>

让我知道,如果你想以其他方式..

于 2013-08-07T05:59:39.333 回答