ASP.Net:动态设置ValidationExpression

ASP.Net:动态设置ValidationExpression,asp.net,validation,Asp.net,Validation,我的表单中有几个页面需要验证电子邮件地址。我不想在每个页面中设置ValidationExpression,而是想将Regex字符串作为字符串常量存储在Constants类中,并执行如下操作 ValidationExpression="<%=Tickets.App_Code.Constants.EmailRegex%>" 我知道我可以在代码隐藏中完成这项工作,但我想在Aspx页面中声明性地完成这项工作。但是,由于文本未被常量的内容替换,因此上述内容不起作用。在ASP.Net中,我

我的表单中有几个页面需要验证电子邮件地址。我不想在每个页面中设置ValidationExpression,而是想将Regex字符串作为字符串常量存储在Constants类中,并执行如下操作

  ValidationExpression="<%=Tickets.App_Code.Constants.EmailRegex%>"
我知道我可以在代码隐藏中完成这项工作,但我想在Aspx页面中声明性地完成这项工作。但是,由于文本未被常量的内容替换,因此上述内容不起作用。在ASP.Net中,我们有像绑定、调用代码这样的语法


我在网上搜索过,但找不到关于这个领域的很多文档。有人能帮你吗?

如果你像这样声明你的类:

namespace MyNamespace
{
    public class MyClass
    {

        public  const string EmailRegex = @"\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b";
    }
}
您当然可以做到这一点,它将发挥作用:

<asp:RegularExpressionValidator runat="server" id="myvalidator" ErrorMessage="email does not have correct format" ValidationExpression='<%=MyNamespace.MyClass.EmailRegex %>' ControlToValidate="email"></asp:RegularExpressionValidator>
<asp:TextBox ID="email" runat="server"></asp:TextBox>
样本输出:


如果您将类声明为以下内容:

namespace MyNamespace
{
    public class MyClass
    {

        public  const string EmailRegex = @"\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b";
    }
}
您当然可以做到这一点,它将发挥作用:

<asp:RegularExpressionValidator runat="server" id="myvalidator" ErrorMessage="email does not have correct format" ValidationExpression='<%=MyNamespace.MyClass.EmailRegex %>' ControlToValidate="email"></asp:RegularExpressionValidator>
<asp:TextBox ID="email" runat="server"></asp:TextBox>
样本输出:


嗨,伊卡洛斯,我也这么认为。它不起作用,所以我在文本框显示时引入了一个文本框。我也很惊讶,但无法解决这个问题one@josephj1989它起作用了。我刚测试过。让我稍后发布一个示例输出。@josephj1989我明白你说使用文本框的意思。我看到的输出与您看到的相同,但如果您在RegularExpressionValidator中使用它,正如我在添加到我的答案中的图片上向您展示的那样,Validator工作得很好。Icarus,您提出的答案肯定不起作用。在你的样本中很容易证明失败,但是展示成功又如何呢。两者都需要证明解决方案是有效的。让我举例说明:在客户端上呈现以下结果:validationexpression=@ozy是正确的,我得到了相同的结果。您需要证明成功,即接受正确的输入模式@伊卡洛斯-你测试过这样的模式吗abc@def.de? 也许答案有帮助?嗨,伊卡洛斯,我也这么认为。它不起作用,所以我在文本框显示时引入了一个文本框。我也很惊讶,但无法解决这个问题one@josephj1989它起作用了。我刚测试过。让我稍后发布一个示例输出。@josephj1989我明白你说使用文本框的意思。我看到的输出与您看到的相同,但如果您在RegularExpressionValidator中使用它,正如我在添加到我的答案中的图片上向您展示的那样,Validator工作得很好。Icarus,您提出的答案肯定不起作用。在你的样本中很容易证明失败,但是展示成功又如何呢。两者都需要证明解决方案是有效的。让我举例说明:在客户端上呈现以下结果:validationexpression=@ozy是正确的,我得到了相同的结果。您需要证明成功,即接受正确的输入模式@伊卡洛斯-你测试过这样的模式吗abc@def.de? 也许答案有帮助?可能重复的可能重复的