2

mvc 3 アプリケーションを作成します。2 つのプロパティを比較する必要があります。例えば:

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

そして、比較結果を返す必要があり、必要に応じてエラーメッセージを取得する属性を作成したいと思います。その結果、ModelState が true または false を返すようにします。プロパティが等しくない場合は 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 に答える