RegularExpressionValidator不能使用代码隐藏中定义的字符串

时间:2012-11-16 15:56:43

标签: asp.net validation

我想使用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中重复它。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您唯一能做的就是在OnInitOnLoad事件中设置代码隐藏中的属性。类似的东西:

protected override void OnLoad(EventArgs e)
{
   txtIndividualEmail.ValidationExpression = myExpressionConstant;
   txtIndividualEmail.ErrorMessage = myErrorMessageConstant;
   // etc
}