CompareValidator缺失值
我在Web窗体上有两个文本框控件,txtPassword和txtPassword2。CompareValidator缺失值
使用CompareValidator控件,两个字段都需要匹配。
txtPassword = ""
txtPassword2 = ""
No compare error
txtPassword throws it's required field error
txtPassword = "1"
txtPassword2 = ""
No compare error
txtPassword = ""
txtPassword2 = "1"
Compare error
txtPassword throws it's required field error
txtPassword = "1"
txtPassword2 = "2"
Compare error
任何想法为什么它缺少txtPassword2的空白值?
下面的代码:
<asp:TextBox ID="txtPassword" Text="" TextMode="Password" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required!" ControlToValidate="txtPassword"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtPassword2" Text="" TextMode="Password" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Passwords do not match!" ControlToValidate="txtPassword2" ControlToCompare="txtPassword"></asp:CompareValidator>
你只为txtPassword
添加asp:RequiredFieldValidator
,所以如果txtPassword2
留空将不会抛出必填字段错误。您需要添加的一件事是asp:RequiredFieldValidator
对于txtPassword2
,并且您还需要指定验证组。因此,该代码将是这样的:
<asp:TextBox ID="txtPassword" Text="" TextMode="Password" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required!" ControlToValidate="txtPassword" ValidationGroup="checkNull"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtPassword2" Text="" TextMode="Password" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Required!" ControlToValidate="txtPassword2" ValidationGroup="checkNull"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Passwords do not match!" ControlToValidate="txtPassword2" ControlToCompare="txtPassword"></asp:CompareValidator>
工作正常,但并不完全是我所追求的。 txtPassword是必填字段,txtPassword2不是必填字段(技术上)。由于txtPassword是必需的,因此必须输入一些内容,因为txtPassword2必须与txtPassword相匹配才能使用它(不使用必需的字段验证程序)。 我试图克服的主要问题是当txtPassword不为空时发布的表单,但txtPassword2为空。他们不匹配,那么为什么它不赶上它?对不起,长期评论,我希望这是有道理的.. – mrkd1991 2014-11-07 02:12:39
我也有类似的情况,我想密码“插入”期间必要的,用来RequiredFieldValidators
,以确保这两个密码箱都用CompareValidator
确保他们匹配完成。
在编辑模式下,我关闭了RequiredFieldValidators
并遇到同样的问题,如果密码保留为空,则PasswordConfirm Textbox
不会停止匹配。
我解决了这个问题,使用了2 CompareValidators
,因为ControlToValidate
和ControlToCompare
字段被交换。这迫使他们来验证彼此,如果任何在任一类型的,它迫使检查
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="tbPassword" ControlToCompare="tbConfirmPassword" Type="String" Display="Dynamic" ForeColor="Red" ErrorMessage="<br />The new passwords do not match" />
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="tbConfirmPassword" ControlToCompare="tbPassword" Type="String" Display="Dynamic" ForeColor="Red" ErrorMessage="<br />The new passwords do not match" />
我不记得CompareValidator不过的RegularExpressionValidator不空的数据。所以你仍然需要RequiredFieldValidator。我认为这是一样的。添加第二个。 – abatishchev 2014-11-05 00:59:42
你需要为txtPassword2添加一个RequiredFieldValidator – sh1rts 2014-11-05 05:00:04