手动显示字段验证程序(ASP.NET/C#)

手动显示字段验证程序(ASP.NET/C#),c#,asp.net,validation,C#,Asp.net,Validation,想象一下联系人表单的场景,通过电子邮件收集数据并进一步传输到适当的地址。其中一个重要字段要求提供电子邮件地址,这对于检测回拨非常重要 假设我使用RequiredFieldValidator在邮件地址字段中检查输入的内容,任何内容;进一步的签入代码将确定提供的邮件地址是否可用 考虑到这两个检查本质上都是验证,我只想从我的代码隐藏中重用RequiredFieldValidator这可能吗? 例如,简单到: MyValidator.Show(); return; 我过去所做的就是在表单中添加一个标签

想象一下联系人表单的场景,通过电子邮件收集数据并进一步传输到适当的地址。其中一个重要字段要求提供电子邮件地址,这对于检测回拨非常重要

假设我使用
RequiredFieldValidator
在邮件地址字段中检查输入的内容,任何内容;进一步的签入代码将确定提供的邮件地址是否可用

考虑到这两个检查本质上都是验证,我只想从我的代码隐藏中重用
RequiredFieldValidator
这可能吗?

例如,简单到:

MyValidator.Show();
return;
我过去所做的就是在表单中添加一个
标签
,然后使用类似的策略,只让控件在需要时可见并返回。理想情况下,我希望完全摆脱这种情况,只需使用一个控件来输出错误消息

对于当前代码的概念,下面是一个框架列表,即使如此,它也是一个完整的概念:

在页面中:

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

<asp:RequiredFieldValidator runat="server" ID="MailAddressValidator" ErrorMessage="Enter a valid mail address" ControlToValidate="MailAddressTextBox" />

<asp:Label runat="server" ID="MailAddressError" Text="Enter a valid mail address" Visible="false" />
隐藏/显示错误标签的方法(除了明显的额外控件外)的缺点是维护它们的可见性,以及每个错误的标签,或消息列表和显示中的代码更改

另外,我希望避免使用多个验证器,至少在这个特定的例子中是这样;
RegularExpressionValidator
不会在这里剪切它,因为我们都知道,仅仅选择“最佳”正则表达式来解析邮件地址本身就是一项壮举,或者它可能包含比实际页面内容+标记更多的字符

如果您需要,我厌恶regex的另一个原因是,最终我必须实现上述try/catch验证,因为即使是“已验证”的地址也可能导致
MailAddress
构造函数失败


因此,请重申:我可以从代码隐藏中激活/重用我的验证器吗?

如果您真的想避免使用多个验证器(我可以理解为什么,生成“串联”错误消息不会像使用两个或多个验证控件那样整洁),我建议使用单个验证器


这意味着您可以编写自己的验证代码(包括用户未提供任何内容的情况和他们提供无效电子邮件地址的情况),并对呈现的错误消息进行精确控制。

我真的认为,如果您正在验证两件事(事实上字段不是空的,并且它是一个有效地址),那么您应该有两个验证器

但是,要回答您的问题,您可以:

MailAddressValidator.ErrorMessage = "Invalid email address";
MailAddressValidator.IsValid = false;
MailAddressValidator.ErrorMessage = "Invalid email address";
MailAddressValidator.IsValid = false;