Anubhava Dimri Ответов: 2

Аннотация данных MVC для Not Equal


Всем Привет,

У меня есть модель, в которой есть два свойства, которые мне нужно сравнить, и они свойства не должны равняться.

Клиент публичного класса
{
общественного строка Новый_пароль {получить; набор;}
общественного строка Старый_пароль {получить; набор;}
}

Есть ли какой-либо атрибут, доступный для того же типа : Не Сравнить

Спасибо

2 Ответов

Рейтинг:
1

Denis Shemenko

Идти против.
Создайте новый проект типа MVC Application -> Internet Application.
Затем перейдите в папку Models и посмотрите AccountModels.

Ты видишь это? :

[Required]
[StringLength(100, ErrorMessage = "Value {0} must be greater length than {2} symbols.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirm Password")]
[Compare("NewPassword", ErrorMessage = "New Password and Confirm Password are not equal.")]
public string ConfirmPassword { get; set; }


Как вам этот стандартный атрибут "Сравнивать"?

UPD: Извините, что не правильно понял вас с первого раза.


Anubhava Dimri

Привет Денис,

Мое требование заключается в том, что есть два Старый_пароль Новый_пароль и собственность. и мне нужен атрибут, когда OldPassword не совпадает с NewPassword.

Я просто хочу противоположную ситуацию сравнения.


В Старый_пароль Новый_пароль ситуации и должны быть одинаковыми. но я просто хочу противоположный случай.

Denis Shemenko

попробуйте это: http://weblogs.asp.net/blogs/scottgu/image_71074F19.png
просто измените оператор сравнения для ваших нужд :)

Рейтинг:
0

Arvic Rivera

может быть, что-то вроде этого

public class NotEqualAttribute : ValidationAttribute
{
  private string OtherProperty { get; set; }

  public NotEqualAttribute(string otherProperty) 
  {
    OtherProperty = otherProperty;
  }

  protected override ValidationResult IsValid(object value, ValidationContext validationContext)
  {
    // get other property value
    var otherPropertyInfo = validationContext.ObjectType.GetProperty(OtherProperty);
    var otherValue = otherPropertyInfo.GetValue(validationContext.ObjectInstance);
    
    // verify values
    if (value.ToString().Equals(otherValue.ToString()))
      return new ValidationResult(string.Format("{0} should not be equal to {1}.", validationContext.MemberName, OtherProperty));
    else
      return ValidationResult.Success;
  }
}


использование:

[Required]
public string OldPassword { get; set; }
[Required]
[NotEqual("OldPassword")]
public string NewPassword{ get; set; }