2012-06-11 99 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; 
     } 
    } 
相關問題