IClientValidatable을 구현하는 사용자 지정 ValidationAttribute가 있습니다. 그러나 실제로 클라이언트 측에 유효성 검사 규칙을 출력하기 위해 GetClientValidationRules는 호출되지 않습니다.GetClientValidationRules는 MVC 응용 프로그램에서 호출되지 않습니다.
속성에 특별한 것은 없지만 어떤 이유로 든 절대로 호출되지 않습니다. Application_Start()에 어댑터 등록을 시도했지만 그 또한 작동하지 않습니다. 위해 Application_Start에서
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class CustomAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
return true;
}
#region IClientValidatable Members
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
string errorMessage = FormatErrorMessage(metadata.GetDisplayName());
yield return new ModelClientValidationRule { ErrorMessage = errorMessage, ValidationType = "custom" };
}
#endregion
}
public class CustomAdapter : DataAnnotationsModelValidator<CustomAttribute>
{
public CustomAdapter(ModelMetadata metadata, ControllerContext context, CustomAttribute attribute)
: base(metadata, context, attribute)
{
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
return this.Attribute.GetClientValidationRules(this.Metadata, this.ControllerContext);
}
}
() 나는이 : 나는 그것을 명중되지 않습니다 GetClientValidationRules 내부에 중단 점을 넣어
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(CustomAttribute), typeof(CustomAdapter));
.
눈에 거슬리지 않는 유효성 검사를 사용합니까? 그렇다면 web.config에서 설정 했습니까? 이 속성을 모델의 속성에 적용 했습니까? Html.TextBoxFor와 같은 표준 mvc Html 헬퍼를 사용하여이 속성을 가진 속성을 렌더링합니까? – Lanorkin