0

나는 두 가지 속성이 동일한 아닌 경우 확인하려면 다음 지정 유효성 검사 속성이 자사의 전체 모델에 적용 : 대신 전체보기 모델을 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; } 
+0

당신은 반사를 사용해야 할 것입니다. 개인적으로 DataAnnotationAttributes는 단일 속성의 범위를 벗어나 확장해야한다고 생각하지 않습니다. 그런 것들을 위해 model/viewmodel에 대한 검증 루틴을 가질 수 있습니다. 하지만 그건 나 뿐이야. – Jonesopolis

+0

속성에 적용된 [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) 좋은 가이드 –

답변

-1

속성 값을 확인하는 또 다른 가능한 방법이 당신의 컨트롤러에서 모델 클래스

[DisplayName("Request By")] 
public string UserId { get; set; } 


[DisplayName("Assign To")] 
[Remote("Validate","Home", HttpMethod="Post", AdditionalFields="UserId", ErrorMessage = "Should not be same")] 
     public string ManagerId { get; set; } 

에서 Remote 속성을

을 사용하는 것입니다

[HttpPost] 
public ActionResult Validate(string ManagerId , string UserId) 
{ 
    // put some validation involving ManagerId and UserId here 
    return Json(true); 
} 

Working Demo is here

+1

이유 투표 ... 그것은 작동 중입니다 ... – mmushtaq

+0

*** [여기에 자사의 작업 데모입니다] (https://dotnetfiddle.net/59L3Ca) *** – mmushtaq