我肯定在这里遗漏了一些东西,因为我期望以相同的方式工作,但工作方式不同。
假设以下 RegularExpressionValidator 语法
<asp:RegularExpressionValidator runat="server" ID="rxEmail" ControlToValidate="txEmail"
ValidationExpression="<%$ appsettings:rxEmail %>" Text="*" />
和以下 CustomValidator 语法/代码
<asp:CustomValidator ID="cvEmail" runat="server" Text="*" onServerValidate="validateContactFormat" />
Sub validateContactFormat(ByVal sender As Object, ByVal args As ServerValidateEventArgs) Handles cvContactFormat.ServerValidate
Dim emailRegEx As Regex = New Regex(ConfigurationManager.AppSettings("rxEmail"))
args.IsValid = emailRegEx.IsMatch(txEmail.Text)
End Sub
web.config 中的表达式是
[\w-]+@([\w-]+\.)+[\w-]+
这应该很简单,并清除最明显的问题,而不会太挑剔。
Anywho,给定输入 bob.smith@someplace.co.uk - RegularExpressionValidator 失败,但 CustomValidator 通过。其他情况按预期工作.. 都通过 blah@blah.com,但会失败 blah.com。可能还有其他问题,但这是我注意到的一个。
我猜 CustomValidator 中的代码与 RegularExpressionValidator 会在“幕后”产生的代码不同 - 但究竟有什么区别,为什么我会看到我所看到的?
非常感谢!