3

이라는 사용자 정의 유효성 검사 속성이 Required 속성에서 파생되었으며이 기능은 textbox 필드에 값이없는 경우 별표 (*) 만 표시하는 기능입니다.MVC3의 사용자 지정 유효성 검사 특성을 사용하여 눈에 거슬리는 JS 유효성 검사를 사용하는 방법은 무엇입니까?

MVC3의 눈에 잘 띄지 않는 JS 유효성 검사는 Required 속성이있는 나비에서 완벽하게 작동하지만 사용자 정의 속성에서는 작동하지 않습니다. 아무 것도 발생하지 않습니다.

무엇이 있습니까?

답변

3

http://samipoimala.com/it/2010/11/29/unobtrusive-client-validation-in-asp-net-mvc-3/

는 사용자 지정 특성을 구현하는 것은 정말 쉬운 일이 밝혀졌습니다. System.ComponentModel.DataAnnotations.ValidationAttribute를 상속하고 System.Web.Mvc.IClientValidatable을 구현하는 고유 한 클래스를 구현합니다. 그래서 세 가지 일을해야합니다.

1) public bool을 오버라이드합니다. IsValid (객체 값) 이 메소드는 서버에서 유효성 검사를 수행 할 때 (예 : 클라이언트에서 JavaScript를 사용할 수없는 경우) 실행됩니다. 이것은 클라이언트 유효성 검사가 필요하지 않은 경우 수행해야하는 모든 것입니다.

2) ModelClientValidationRule에서 상속받은 클래스를 만듭니다. 이것은 대개 매우 간단합니다. 다음 예는 클라이언트에서 이메일 유효성 검사를 설정하는 방법은 다음과 같습니다

public class ModelClientValidationEmailRule : ModelClientValidationRule 
{ 
    public ModelClientValidationEmailRule(string errorMessage) 
    { 
     base.ErrorMessage = errorMessage; 
     base.ValidationType = "email"; 
    } 
} 

3) 공공는 IEnumerable GetClientValidationRules 구현 (ModelMetadata 메타 데이터, ControllerContext 컨텍스트)

이것은 또한 구현 일반적으로 매우 간단합니다, 여기에 이메일의 예입니다 검증 :

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) 
{ 
    yield return new ModelClientValidationEmailRule(FormatErrorMessage(metadata.GetDisplayName())); 
} 

이것은 당신이 jQuery를 검증 플러그인에 레디 메이드 유효성 검사 규칙을 사용하여 유효성 검사를 사용하려면 자신의 속성을 작성 할 필요합니다.