【问题标题】:ASP.Net: setting ValidationExpression dynamicallyASP.Net:动态设置 ValidationExpression
【发布时间】:2011-10-15 05:30:50
【问题描述】:

我的表单中有几个页面需要验证电子邮件地址。而不是在每个页面中设置ValidationExpression,我想将正则表达式字符串存储在一个常量类中作为一个字符串常量并做一些类似

的事情
  ValidationExpression="<%=Tickets.App_Code.Constants.EmailRegex%>"

我知道我可以在后面的代码中执行此操作,但我想在 Aspx 页面中以声明方式执行此操作。但是,上述内容不起作用,因为文本不会被常量的内容替换。在 ASP.Net 中,我们有类似 &lt;%# %&gt;(Binding) , &lt;%= %&gt; (Invoke code) 的语法。

我在网上搜索过,但在这方面找不到太多文档。有人可以帮忙吗?

【问题讨论】:

标签: asp.net validation


【解决方案1】:

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

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>

示例输出:

【讨论】:

  • 嗨,伊卡洛斯,我也这么认为。它没有用,所以我引入了一个文本框 文本框显示 我也很惊讶,但无法理清这个
  • @josephj1989 它有效。我刚刚测试了它。让我稍后发布一个示例输出。
  • @josephj1989 我明白你说你使用了文本框的意思。我看到的输出和你一样,但是如果你在 RegularExpressionValidator 中使用它就可以了,就像我在我添加到我的答案中的图片中向你展示的那样。
  • 伊卡洛斯,您提出的答案肯定行不通。如您的示例所示,证明失败很容易,但是如何证明成功。两者都需要证明解决方案有效。让我来说明一下: 导致在客户端上呈现以下内容:validationexpression =""
  • @Ozzy 是对的,我得到了相同的结果。您还需要证明成功(即接受正确的输入模式)。 @Icarus - 你测试过abc@def.de 之类的模式吗?也许 this 回答有帮助?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多