我写了mvc 3应用程序。我应该比较两个属性。例如:
public class RenameCompare
{
public string OldName { get; set; }
public string NewName { get; set; }
}
我想创建属性,应该返回比较结果,并在必要的情况下获取错误消息。所以在结果中我希望ModelState返回true或false。如果属性不等于则返回true ModelState.IsValid else返回false。每个人都可以帮我????
答案 0 :(得分: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;
}
}