나는 두 가지 속성이 동일한 아닌 경우 확인하려면 다음 지정 유효성 검사 속성이 자사의 전체 모델에 적용 : 대신 전체보기 모델을 decoarate하지 않도록 내가 유효성 검사 속성을 만들 수있는 방법ASP MVC 5 두 가지 속성을 비교하는 사용자 지정 유효성 검사 특성?
[AttributeUsage(AttributeTargets.Class)]
public class ValidateUser : ValidationAttribute
{
public override bool IsValid(object value)
{
UserViewModel user = value as UserViewModel;
if(user.UserId == user.ManagerId)
{
ErrorMessage = "The user and manager cannot be the same";
return false;
}
return true;
}
}
[ValidateUser]
public class UserViewModel
{
[DisplayName("Request By")]
public string UserId { get; set; }
[DisplayName("Assign To")]
public string ManagerId { get; set; }
}
유효성 검사가 필요한 속성 가까이에 오류 메시지가 표시되도록 유효성 검사가 필요한 속성을 꾸밀 수 있습니다. 뭔가 아래와 같이 :
[DisplayName("Request By")]
[ValidateUser]
public string UserId { get; set; }
[DisplayName("Assign To")]
[ValidateUser]
public string ManagerId { get; set; }
당신은 반사를 사용해야 할 것입니다. 개인적으로 DataAnnotationAttributes는 단일 속성의 범위를 벗어나 확장해야한다고 생각하지 않습니다. 그런 것들을 위해 model/viewmodel에 대한 검증 루틴을 가질 수 있습니다. 하지만 그건 나 뿐이야. – Jonesopolis
속성에 적용된 [foolproof] (http://foolproof.codeplex.com/)'[NotEqualTo] '유효성 검사 속성을 사용하는 것을 고려하십시오. 다른 현명한 당신은 자신을 만들 수 있습니다 - 참조 ASP.NET MVC 3 - 파트 2에서 유효성 검사에 대한 완전한 가이드] (http://www.devtrends.co.uk/blog/the-complete-guide-to-validation- in-asp.net-mvc-3-part-2) 좋은 가이드 –