【问题标题】:how to set regular validation expression dynamically in codebehind C# ASP.NET如何在代码隐藏 C# ASP.NET 中动态设置正则验证表达式
【发布时间】:2015-11-13 09:20:38
【问题描述】:

我在验证TextBox1ascx 页面中有RegularExpressionValidator

<asp:RegularExpressionValidator ID ="RegularExpressionValidatorStateNumber" runat = "server" ControlToValidate="TextBox1" 
ErrorMessage="Error message" Display ="Dynamic" ValidationExpression=""/>

我需要根据dropdownlist 的选择动态更改ValidationExpression

这是我在 codeBehind 中所做的:

protected void DropDlSelectedIndexChanged(object sender, EventArgs e)
{        
    string region = DropDl.SelectedItem.Text;            
    RegularExpressionValidatorStateNumber.ValidationExpression = GetRegex(region); 
}

返回正则表达式的函数GetRegex(region) 工作正常。 但验证不起作用。插入错误数据时验证器不显示错误消息。

为什么验证不起作用?或者如何动态设置验证表达式?

【问题讨论】:

    标签: c# asp.net regex


    【解决方案1】:

    不要将错误消息显示为 ErrorMessage,而是显示为 TextText="格式不正确";

    如果你给它上色也很好:ForeColor = Color.Red

    【讨论】:

      【解决方案2】:

      使用MATCH,它返回一个匹配对象,其中包含输入字符串中的所有匹配项。当输入文本中存在多个匹配项时,这很有用。以下代码会导致多个匹配项:

       string region = DropDl.SelectedItem.Text; // @"^([\w]+) ([\w]+)$";
       string yourText="abcdxyz"
      
      Match m = Regex.Match(yourText, region , RegexOptions.CultureInvariant);
      
      foreach (Group g in m.Groups)
      {
          Console.WriteLine(g.Value);
      }
      

      【讨论】:

      • 我的问题的正则表达式部分工作正常。我的RegularExpressionValidator 没有显示错误消息。
      【解决方案3】:

      ex0: 10 位手机号码 rgvMobNumber.ValidationExpression = "\d{" + iLength + "}";

      ex1: rgvPostcode.ValidationExpression = @"^[a-zA-Z0-9\s]{" + txtboxLength + ",8}$"; ex2 rgvPostcode.ValidationExpression =@"^[\s\S]{" + MinLength + "," + MaxLength + "}$";

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多