Asp.net mvc 4 MVC模型自定义控件属性

Asp.net mvc 4 MVC模型自定义控件属性,asp.net-mvc-4,Asp.net Mvc 4,我正在使用自定义UniqueMail确认属性,如 public class UniqueEmailAttribute : ValidationAttribute { public override bool IsValid(object value) { WMContext db = new WMContext(); var userWithTheSameEmail = db.Users.SingleOrDefault( u

我正在使用自定义UniqueMail确认属性,如

public class UniqueEmailAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        WMContext db = new WMContext();
        var userWithTheSameEmail = db.Users.SingleOrDefault(
            u => u.email == (string)value);
        return userWithTheSameEmail == null;
    }

}
插入用户时,它工作正常。但是,当我尝试更新用户时,它会给出一个错误

public class User
{
    public int userID { get; set; }

    [Required]
    [Display(Name = "Name")]
    public string name { get; set; }

    [Required]
    [Display(Name = "Email")]
    [UniqueEmail(ErrorMessage = "This email is used by another user")]
    public string email { get; set; }
}
解决方案:我已更改IsValid方法,如下所示:

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var model = (User)validationContext.ObjectInstance;
        WMContext db = new WMContext();
        var userWithTheSameEmail = db.Users.SingleOrDefault(
            u => u.email == (string)value && u.userID!=model.userID);
        if (userWithTheSameEmail!=null)
        {
            return new ValidationResult("Bu eposta adresi kullanılıyor.");
        }
        return ValidationResult.Success;
    }

请从问题中删除您的解决方案,并将其作为答案,您完全可以接受。这有助于其他人理解问题已经得到了回答。别着急,嗨,埃里克。它不允许写答案。我们不再接受来自此帐户的答案。有关详细信息,请参阅帮助中心。