2012-06-11 3 views
2

mvc 3 응용 프로그램에 씁니다. 두 속성을 비교해야합니다. 예를 들면 :뷰 모델 속성에 대한 사용자 지정 비교 특성을 만드는 방법

public class RenameCompare 
{ 
     public string OldName { get; set; } 
     public string NewName { get; set; } 
} 

내가 복귀 비교 결과하고 필요한 경우 오류 메시지를해야입니다 속성을 만들려고합니다. 그래서 결과에서 ModelState가 true 또는 false를 반환하도록합니다. 속성이 같지 않으면 true ModelState.IsValid를 반환하고 그렇지 않으면 false를 반환합니다. 모두들 나를 도울 수 있습니까 ????

답변

2

해결책을 찾았습니다. 여기서 사용자 지정 NotEqual 특성을 만듭니다.

public class RenameCompare 
    { 

     public string OldName { get; set; } 

     [NotEqual(PropName="OldName", ErrorMessage="The oldname and new name are equal!")] 
     public string NewName { get; set; } 
    } 
    public class NotEqualAttribute : ValidationAttribute 
    { 
     public string PropName { get; set; } 


     protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
     { 
      PropertyInfo otherPropertyInfo = validationContext.ObjectType.GetProperty(PropName); 

      var otherPropertyStringValue = otherPropertyInfo.GetValue(validationContext.ObjectInstance, null).ToString(); 

      if (Equals(value.ToString(),otherPropertyStringValue)) 
      { 
       return new ValidationResult(FormatErrorMessage(validationContext.DisplayName)); 
      } 
      return null; 
     } 
    } 
관련 문제