電子メールがまだ使用されていないことを検証するカスタム検証クラスを作成しようとしています。これを行うには、問題の電子メールアドレスを持つuserprofilesを数えるメソッドがあります。十分に単純ですが、ユーザーがプロフィールを更新している場合は、私が言及した数からプロフィールを除外する必要があります。だから、それを行うために、私は次のような方法が書かれている:私がする必要があるすべてはuserprofile_idのために0を渡しているようMVC3 2つのプロパティを使用した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;
}
これは、新規ユーザー用のカスタムバリデータクラスに適しています。
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を渡す必要があります。私はこのことを考え出すのが難しいです。
ご協力いただければ幸いです。
ありがとうございます!
string currentUsername = HttpContext.Current.User.Identity.Name;
をし、私はこの方法でHttpContext.Current
の使用を提案するため宣告しています前に、あなたは、プロバイダ使用できます: