Asp.net mvc 4 MVC模型自定义控件属性
我正在使用自定义UniqueMail确认属性,如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
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;
}
请从问题中删除您的解决方案,并将其作为答案,您完全可以接受。这有助于其他人理解问题已经得到了回答。别着急,嗨,埃里克。它不允许写答案。我们不再接受来自此帐户的答案。有关详细信息,请参阅帮助中心。