3
我有以下型號自定義屬性來驗證,如果郵件是在asp.net mvc的獨特
public partial class OwnerData
{
public string firstname { get; set; }
public string lastname { get; set; }
[Required]
[StringLength(60)]
[EmailAddress]
[MailNotExists] //this is a custom function
public string email { get; set; }
}
自定義功能MailNotExists如下
namespace MyApp.CustomDataAnnotations
{
public class MailNotExists : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DbContext db = new DbContext();
var user = db.Users.FirstOrDefault(u => u.email == (string)value);
if (user == null)
return ValidationResult.Success;
else
return new ValidationResult("Mail already exists");
}
}
}
該模型被用來進查看給用戶更改郵件的可能性,槽
@Html.EditorForModel();
html輸出返回到編輯器也是現有的郵件,如果你想改變它,系統首先檢查郵件是否已經存在於db通過驗證器[MailNotExists]並且一切正常。唯一的問題是,如果用戶不想更改郵件,但只需要名字或姓氏,然後提交表單,驗證器將返回錯誤,因爲郵件已存在。
任何解決方案如何旁路驗證程序只在該特定情況下?
是的,對不起,我在我的例子中忘記了插入PK。事實上,在我的代碼中,模型包含很多屬性,但我只是將它清理成更合適。無論如何,你的解決方案完美無瑕。謝謝! – Sefira