Я пытаюсь написать собственный класс проверки, который проверяет, что письмо еще не используется. Для этого у меня есть метод, который учитывает пользовательские профили, у которых есть указанный адрес электронной почты. Достаточно просто, но если пользователь обновляет свой профиль, мне нужно исключить их профиль из числа, о котором я упоминал. Таким образом, чтобы сделать это, я написал следующий метод: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;
}
Это хорошо работает в пользовательском классе валидатора для новых пользователей, так как все, что мне нужно сделать, это передать 0 в для userprofile_id.
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 этого текущего пользователя. Мне сложно разобраться в этом.
Любая помощь была бы принята с благодарностью.
Спасибо!