2013-02-12 3 views
0

С помощью этого кода я проверить, является ли или нет имя пользователя:ValidationAttribute проверить уникальность

public class UniqueUsernameAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     IRepository<User> userRepository = new EFRepository<User>(); 

     User user = userRepository.GetAll().FirstOrDefault(x => x.Name.Equals((string) value)); 

     return user == null; 
    } 
} 

Это отлично работает при добавлении новых пользователей. Но при редактировании пользователей один существующий уже будет присутствовать в базе данных, и поэтому этот код больше не работает (поскольку я проверяю, есть ли 0 записей, а 1 уже существует). Есть ли способ добавить дополнительный параметр или что-то еще?

Благодаря

ответ

1

Вы могли бы попробовать, что эта статья CodeProject предлагает: http://www.codeproject.com/Articles/260177/Custom-Validation-Attribute-in-ASP-NET-MVC3

Переопределение другой IsValid даст вам варианты, чтобы включить дополнительные данные, в том числе, являются ли вы действительно ищете новый - без dupliated пользователя , или вы смотрите на существующего пользователя.

using System.ComponentModel.DataAnnotations; 

public class testattribute : ValidationAttribute  
{ 
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     return base.IsValid(value, validationContext); 
    } 
} 
Смежные вопросы