0

모델에서 데이터 주석을 사용할 때 클라이언트 측 유효성 검사를 위해 JavaScript를 내보내는 데 문제가 있습니다. 여기에서 방출되는 것 자바 스크립트 다음 두 개의 필수 필드가 잘 작동 모델의 샘플입니다 :ASP.NET MVC 2 RC - 데이터 주석을 사용하는 클라이언트 측 유효성 검사가 여러 속성과 함께 실패합니다.

public class LoginUserViewModel 
    { 
     [Required(ErrorMessage = "Email required")] 
     public string EmailAddress { get; set; } 

     [Required(ErrorMessage="Password required")] 
     public string Password { get; set; } 
    } 
} 

//<![CDATA[ 
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; } 
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"EmailAddress","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_EmailAddress_validationMessage","ValidationRules":[{"ErrorMessage":"Email required","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"Password","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_Password_validationMessage","ValidationRules":[{"ErrorMessage":"Password required","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false}); 
//]]> 

을 최대한 빨리이 EmailAddress를 필드, 정규 표현식 속성에 다른 속성을 넣어은, 자바 스크립트는 더 이상 없다 방출 된 모든 규칙. 아래 JavaScript에는 규칙이 있어야하는 빈 배열이 있습니다. 여기에 변화와 스크립트가 있습니다. 어떤 아이디어?

public class LoginUserViewModel 
    { 
     [Required(ErrorMessage = "Email required")] 
     [RegularExpression(@"^[a-z0-9]+([-+\.]*[a-z0-9]+)*@[a-z0-9]+([-\.][a-z0-9]+)*{2,4}$", ErrorMessage = "Invalid email format")] 
     public string EmailAddress { get; set; } 

     [Required(ErrorMessage="Password required")] 
     public string Password { get; set; } 
    } 

//<![CDATA[ 
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; } 
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"EmailAddress","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_EmailAddress_validationMessage","ValidationRules":[]},{"FieldName":"Password","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_Password_validationMessage","ValidationRules":[{"ErrorMessage":"Password is required.","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false}); 
//]]> 

새로운 속성을 추가 할 때 규칙이 사라질 이유가 있습니까?

감사합니다.

추가 조사 후

답변

6

이 문제가 다시 - 투 - 다시 두 한정사를 지정했기 때문에 정규 표현식이 깨진 것입니다 :

parsing "[a-z0-9]+([-+\.]*[a-z0-9]+)*@[a-z0-9]+([-\.][a-z0-9]+)*{2,4}" 
- Nested quantifier {. 

모든 규칙이 사라진 것처럼 보일 이유가있는 CLR 때문에 속성 생성자의 예외를 삼켜 버리고 "죄송합니다. 여기에 속성이 없습니다"라고 알려줍니다.

관련 문제