2014-08-31 2 views
2

나는 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

이 옵션을 사용하면

을 고려할 수 있습니다. 여러 번 적용 할 수있는 사용자 지정 특성을 만듭니다 (AllowMultiple=true 사용). 이 클라이언트 측 유효성 검사

B와 함께 작동하는 경우

[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 
{ 
    .... 
} 
+0

이 a.See 옵션을 사용하지 마십시오 http://stackoverflow.com/questions/35652533/should-i-use-multiple-regularexpression-attributes/35658502#35658502 –

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