당신은 ValidationAttribute 클래스를 확장을 통해 IsValid 방법을 타고, 당신은 유효성 검사를 수행하는 사용자 정의 JavaScript를 펌프하려는 경우 IClientValidatable를 구현해야 할 수 있습니다. 아래처럼.
[AttributeUsage(AttributeTargets.Property)]
public sealed class AtLeastOneOrTwoParamsHasValue : ValidationAttribute, IClientValidatable
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var param1 = validationContext.ObjectInstance.GetType().GetProperty("Param1").GetValue(value, null);
//var param2 = validationContext.ObjectInstance.GetType().GetProperty("Param2").GetValue(value, null);
//DO Compare logic here.
if (!string.IsNullOrEmpty(Convert.ToString(param1)))
{
return ValidationResult.Success;
}
return new ValidationResult("Some Error");
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
//Do custom client side validation hook up
yield return new ModelClientValidationRule
{
ErrorMessage = FormatErrorMessage(metadata.DisplayName),
ValidationType = "validParam"
};
}
}
사용법 :
[AtLeastOneOrTwoParamsHasValue(ErrorMessage="Atleast one param must be specified.")]
바로 사용자 정의 유효성 검사기의 여기 친구입니다. – veblock
문제를 해결할 수있는 RequiredIf라는 맞춤 검사기가 있습니다. – Joe
@JoeTuskan, 네 말이 맞아, [이 블로그 게시물] (http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc)을 발견했다. -3.aspx)를 참조하면 내 문제가 해결됩니다. 당신이 신용을 줄 수 있도록 대답을 입력하고 싶다면, 저로서는 괜찮습니다. 그렇지 않다면 +1하십시오. –