Bv202
Bv202

Reputation: 4044

ValidationAttribute to check uniqueness

With this code I check whether a username is valid or not:

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;
    }
}

This works fine when adding new users. But when editing users, one existing one will already be present in the database and so this code doesn't work anymore (as I check if there are 0 entries, while 1 will exist already). Is there any way to add an extra parameter or something?

Thanks

Upvotes: 0

Views: 165

Answers (1)

scott-pascoe
scott-pascoe

Reputation: 1483

You might try what this CodeProject article suggests: http://www.codeproject.com/Articles/260177/Custom-Validation-Attribute-in-ASP-NET-MVC3

Overriding the other IsValid would give you the options to include additional data including whether you are really looking for a new - non-dupliated user, or whether you are looking at an existing user.

using System.ComponentModel.DataAnnotations;

public class testattribute : ValidationAttribute    
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        return base.IsValid(value, validationContext);
    }
}

Upvotes: 1

Related Questions