0

我想使用 asp:RegularExpressionValidator 控件来验证多个文本框。一些文本框包含电子邮件地址。我不想为每个不同的文本框在 RegularExpressionValidator 的属性中重复相同的正则表达式。因此,我在代码隐藏中将表达式定义为常量

Const regEmail As String = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$"

同样,我以这种方式定义错误消息。

const regEmailMsg = "Email address does not appear to be valid."

但是,我找不到将这些字符串包含在我的 ASPX 页面中的 RegularExpressionValidator 控件中的方法。有效的表达式被标记为无效。作为另一个失败,ValidatorCalloutExtender 出现了,但它的中间部分丢失了 - 错误消息没有出现。这是一个示例文本框和验证器:

<asp:TextBox ID="txtIndividualEmail" runat="server" Width = "200"></asp:TextBox>

<asp:RegularExpressionValidator ID="revIndividualEmail" runat="server" ErrorMessage="<% =regEmailMsg %>" Display="None" 
ControlToValidate="txtIndividualEmail" ValidationExpression="<% =regEmail %>" >    </asp:RegularExpressionValidator>

<cc1:ValidatorCalloutExtender ID="vceIndividualEmail" runat="server" 
Enabled="True" TargetControlID="revIndividualEmail" HighlightCssClass="validatorCalloutHighlight">
</cc1:ValidatorCalloutExtender>

当我将字符串直接包含在 ASPX 中时,一切正常:

<asp:RegularExpressionValidator ID="revIndividualEmail" runat="server" ErrorMessage="Email address does not appear to be valid." Display="None" 
ControlToValidate="txtIndividualEmail" ValidationExpression="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$"

电子邮件只是我想重复使用字符串进行验证的一个例子,因此不想在我的 ASPX 中重复它。有没有办法做到这一点?

4

1 回答 1

0

您在这里真正可以做的唯一一件事就是在OnInitorOnLoad事件的代码隐藏中设置属性。就像是:

protected override void OnLoad(EventArgs e)
{
   txtIndividualEmail.ValidationExpression = myExpressionConstant;
   txtIndividualEmail.ErrorMessage = myErrorMessageConstant;
   // etc
}
于 2012-11-16T16:02:12.440 回答