0

このコードを使用して、ユーザー名が有効かどうかを確認します。

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

これは、新しいユーザーを追加するときに正常に機能します。ただし、ユーザーを編集する場合、既存の1つがデータベースにすでに存在するため、このコードは機能しなくなります(0のエントリがあるかどうかを確認しますが、1はすでに存在します)。パラメータなどを追加する方法はありますか?

ありがとう

4

1 に答える 1

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);
    }
}
于 2013-02-12T15:55:49.143 に答える