在asp.NET正则表达式验证控件中重用表达式

sen*_*ett 3 asp.net ascx

我在ascx文件中有这个:

<asp:textbox ID="AddHourlyRate" runat="server" width="55px" />
<asp:RegularExpressionValidator  ID="AddHourlyRateRegexValidator"
    ErrorMessage="Please enter a valid charge rate (whole number only)" 
    ValidationExpression="^\$?[0-9]+(\.[0]{2})?$" ControlToValidate="AddHourlyRate" 
    Display="Dynamic" runat="server" />
Run Code Online (Sandbox Code Playgroud)

如何ValidationExpression在asp:RegularExpressionValidator不必复制粘贴正则表达式的情况下重用其他s?我是asp.NET的新手.

Ant*_*ula 5

为每个正则表达式创建一个带有const字符串的类,我使用该解决方案来解决您的确切问题.该类位于一个由多个项目共享的公共程序集中.并且您可能在其他一些地方使用正则表达式而不仅仅是验证器控件.

像这样的东西:

public class RegularExpressions
{
  public const string TelephoneValidation = @"^[0-9 ]+$";
  public const string IntegerValidation = @"^\d+$";
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以从后面的代码设置验证器表达式:

validator.ValidationExpression = RegularExpressions.IntegerValidation;
Run Code Online (Sandbox Code Playgroud)

或者在标记中:

<%@ Import Namespace="RegularExpression.Class.Namespace" %>  
.
.
.  
<asp:RegularExpressionValidator  ID="AddHourlyRateRegexValidator"
        ErrorMessage="Please enter a valid charge rate (whole number only)" 
        ValidationExpression="<%# RegularExpressions.IntegerValidation %>" ControlToValidate="AddHourlyRate" 
        Display="Dynamic" runat="server" />
Run Code Online (Sandbox Code Playgroud)

当然在import指令中编写适当的命名空间.