【问题标题】:ASP.Net regular expression validator setting ValidationExpression dynamicallyASP.Net 正则表达式验证器动态设置 ValidationExpression
【发布时间】:2015-05-19 12:51:08
【问题描述】:

我正在尝试这样做:

<obout:OboutTextBox ID="txtDistributorEmail" runat="server" Width="250" />
    <asp:RegularExpressionValidator ID="revDistributorEmail" runat="server"     
    ErrorMessage="An invalid email address was entered."                                 
    ValidationExpression='<%=Mynamespace.RegEx.EMAIL %>' 
    ControlToValidate="txtDistributorEmail" />

namespace Mynamespace
{
    public class RegEx
    {
        public const string EMAIL = @"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z] 
        [-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$";
    }
 }

即使输入了正确的电子邮件,验证也会失败。但如果我用正则表达式[] 替换ValidationExpression,它就可以正常工作。

有什么不对的地方吗?

【问题讨论】:

  • 看看 ValidationExpression 如何在您的 HTML 中呈现。这应该告诉你很多。

标签: asp.net validation


【解决方案1】:

这是在 aspx 页面的顶部:

<%@ Import Namespace="Mynamespace" %>  

<asp:RegularExpressionValidator ID="revDistributorEmail" runat="server"     
    ErrorMessage="An invalid email address was entered."                                 
    ValidationExpression="<%# Mynamespace.RegEx.EMAIL %>" 
    Display="Dynamic"
    ControlToValidate="txtDistributorEmail" />

【讨论】:

  • 安,我在呈现的 HTML 中看到了这一点:revDistributorEmail.evaluationfunction = "RegularExpressionValidatorEvaluateIsValid"; revDistributorEmail.validationexpression = "";
  • 哦,男孩-右键单击带有该代码的 .aspx 页面,然后单击查看源代码,然后页面加载部分进入那里,而不是在 HTML 中-或者您使用的是 MVC?
  • 我就是这么做的。右键单击并查看源代码,这就是网页上呈现的 HTML。
  • 另外,你之前的评论没有任何意义,整个想法不是在代码隐藏中硬编码正则表达式,而是将它们存储在一个我可以重用的类中.
  • oohhhhh,我明白了,等一下,我以为你希望能够动态更改-而不是重用,我现在明白了,等一下
【解决方案2】:

试试这个;用于动态re 验证。

RegularExpressionValidator re = new RegularExpressionValidator();
re.ControlToValidate = "textbox121"; //mention your textbox id
re.Style.Add("color", "Red");
re.ID = "Reg1";
re.ValidationExpression = "^[a-zA-Z\\s]+$";
re.ErrorMessage = "Special Characters Are Not Allowed";

【讨论】:

    最近更新 更多