繁体   English   中英

如何在代码隐藏 C# ASP.NET 中动态设置正则验证表达式

[英]how to set regular validation expression dynamically in codebehind C# ASP.NET

我在验证TextBox1 ascx页面中有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)工作正常。 但验证不起作用。 插入错误数据时,验证器不会显示错误消息。

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

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

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

使用MATCH返回一个 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);
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM