多个单独的正则表达式

时间:2014-08-31 23:49:03

标签: c# asp.net-mvc

我有一个ASP.NET MVC应用程序。此应用程序包含一个表单,我需要对其进行多个正则表达式检查,根据问题应该有不同的错误。

有谁知道我会采取单独错误的方式?我尝试在一个模型属性上使用多个RegularExpression注释,但这会在编译时引发错误。以下是代码示例:

[Required]
[Display(Name = "Distribution List Name")]
[StringLength(65, ErrorMessage = "Must be under 65 characters")]
[RegularExpression("^#(CONTOSO|MEGACORP|TESTCOMPANY)([-_A-Za-z0-9 ]+)$", ErrorMessage = "Invalid company, or the name contains invalid characters (Allowed characters are alphanumeric, - and _)")]
public string Name { get; set; }

理想情况下,我希望在字符串开头检查公司,并允许字符检查以抛出单独的错误消息。

2 个答案:

答案 0 :(得分:2)

您可以考虑的两个选项

一个。创建一个允许多次应用的自定义属性(使用AllowMultiple=true)。

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple=true)]
public class MyAttribute: RegularExpressionAttribute
{
  ....
}

并在Global.asax.cs

中注册
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MyAttribute), typeof(RegularExpressionAttributeAdapter));

注意,我还没有测试过它是否适用于客户端验证

湾创建一个自定义验证器并分别测试每个正则表达式并返回相应的消息。

public class MyAttribute : ValidationAttribute, IClientValidatable
{
  ....
}

答案 1 :(得分:0)

如果您无法使用数据属性进行所有检查。 您可以通过执行以下操作来接收表单时以编程方式执行此操作:

if(!myCheckIsOkay)
    Modelstate.AddModelError("CompanyName", "the check of the company name was not correct")
//... Do other checks
if(Model.IsValid)
//Do something here with valid model