C# 存储的密码是否会破坏ASP.NET CompareValidator?

C# 存储的密码是否会破坏ASP.NET CompareValidator?,c#,asp.net,.net,validation,C#,Asp.net,.net,Validation,我正试图为我的公司创建一个注册页面,所以我在表单上写下密码和“重复密码”文本框,以及一个CompareValidator。无论用户何时进入这两个字段,键入数据并单击Register/Submit按钮,它似乎都可以正常工作 然而,我注意到一个问题,在测试期间,我的Firefox浏览器保存了我输入的密码。保存密码后,如果我返回到“刷新”页面,它会显示密码字段中已填写的密码(但由于某些原因,不会出现在“重复密码”字段中) 无论如何,如果我随后填充电子邮件地址,那么我可以单击注册/提交按钮,而不会出现任

我正试图为我的公司创建一个注册页面,所以我在表单上写下密码和“重复密码”文本框,以及一个
CompareValidator
。无论用户何时进入这两个字段,键入数据并单击Register/Submit按钮,它似乎都可以正常工作

然而,我注意到一个问题,在测试期间,我的Firefox浏览器保存了我输入的密码。保存密码后,如果我返回到“刷新”页面,它会显示密码字段中已填写的密码(但由于某些原因,不会出现在“重复密码”字段中)

无论如何,如果我随后填充电子邮件地址,那么我可以单击注册/提交按钮,而不会出现任何问题

最令人担忧的是,当我调试到CodeBehind中,甚至通过手动触发控件的Validate方法和页面的Validate方法来强制验证时,它仍然以某种方式通过了验证,尽管如下面屏幕截图中的QuickWatches所示,字段有两个不同的值

我是否发现了一个应该向微软报告的bug,或者我是否可能在设置这一切时做错了什么?我所做的只是在表单上弹出
比较计算器
,将“ControlToCompare”设置为“txtUserPass”,将“ControlToValidate”设置为“txtRepeatPass”,并将操作设置为“Equal”

我是否在这里做错了什么,或者我是否发现了由浏览器存储密码引起的真正错误?

如上所述,
CompareValidator
不会触发空值:

If the input control is empty, no validation functions are called and validation succeeds. 
Use a RequiredFieldValidator control to require the user to enter data in the input control.

您需要将
CompareValidator
RequiredFieldValidator

相结合。您需要将
[必需的]
添加到
字符串txtRepeatPass
属性中。由于该值为空,
[Compare]
不会触发。啊,谢谢@Catalin我的表单上确实有一个单独的RequiredFieldValidator用于重复密码,但是您的评论让我再次查看它,我刚刚发现它指向的是主密码字段,而不是重复密码!所以我解决了这个问题,解决了这个问题!奇怪的行为,虽然它仍然没有尝试比较空白值与其他值,但。。。我想你还是想比较一下。你能把你的评论作为一个答案,这样我就可以把它标记为正确的答案吗?