ValidationAttribute检查唯一性

时间:2013-02-12 14:55:37

标签: c# asp.net-mvc

使用此代码,我会检查用户名是否有效:

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 个答案:

答案 0 :(得分:1)

您可以尝试CodeProject文章建议的内容:http://www.codeproject.com/Articles/260177/Custom-Validation-Attribute-in-ASP-NET-MVC3

覆盖其他IsValid会为您提供包含其他数据的选项,包括您是否真的在寻找新的 - 非重复用户,或者您是否在查看现有用户。

using System.ComponentModel.DataAnnotations;

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