2

我编写 mvc 3 应用程序。我应该比较两个属性。例如:

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

我想创建应该返回比较结果的属性,并在必要的情况下获取错误消息。所以结果我希望 ModelState 返回真或假。如果属性不等于则返回 true ModelState.IsValid 否则返回 false。大家可以帮帮我吗???

4

1 回答 1

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;
        }
    }
于 2012-06-13T11:47:50.840 回答