我想寫一個自定義驗證類,驗證電子郵件尚未被使用。要做到這一點,我有一個方法來計算有問題的電子郵件地址的用戶配置文件。很簡單,但如果用戶正在更新他們的個人資料,我需要從我提到的人數中排除他們的個人資料。因此,要做到這一點,我寫了下面的方法:MVC3 Custon驗證屬性使用兩個屬性
public static bool IsEmailUnique(string email, int userprofileId)
{
int count = -1;
using (var db = new TRDataContext())
{
count = (from u in db.Userprofiles
where u.email == email &&
(userprofileId == 0 || u.userprofile_id != userprofileId)
select u).Count();
}
return count == 0;
}
這非常適用於新用戶的自定義驗證類,因爲所有我需要做的是在爲userprofile_id傳遞一個0。
public class EmailValidatorAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return Userprofile.IsEmailUnique(value.ToString(), 0);
}
}
像這樣
[DisplayName("Email Address")]
[Required(ErrorMessage = "Required")]
[RegularExpression(EmailRegex, ErrorMessage = "Invalid email address")]
[EmailValidator(ErrorMessage = "Already in use")]
public string email { get; set; }
實現。然而,我現在需要傳遞到爲EmailValidator是當前用戶的userprofile_id。我很難找出這個問題。
任何幫助將不勝感激。
謝謝!