我想使用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中重复它。有没有办法做到这一点?
答案 0 :(得分:0)
您唯一能做的就是在OnInit
或OnLoad
事件中设置代码隐藏中的属性。类似的东西:
protected override void OnLoad(EventArgs e)
{
txtIndividualEmail.ValidationExpression = myExpressionConstant;
txtIndividualEmail.ErrorMessage = myErrorMessageConstant;
// etc
}