2012-04-19 8 views
2

私はデフォルトのASP.NET MVCメンバーシッププロバイダを使用しています。ユーザが自分のアカウントを作成した後に、そのユーザの電子メールを変更できるようにしたいと考えています。私はユーザーが重複した電子メールを使用できるようにしたくありません。デフォルトのMVCメンバーシッププロバイダを使用して登録した後で電子メールアドレスを変更すると、電子メールアドレスが重複しないようにするにはどうすればよいですか?

どのようにしてユーザが自分のメールアドレスを変更し、そのメールアドレスがデータベースの他の場所で使用されていないことを確認できますか?既定のメンバーシッププロバイダを使用する場合、このタイプのチェックを実行する最善の方法がわかりません。

注 - ユーザーが自分のメールアドレスを登録しようとしたときにメンバーシッププロバイダ自体がこのチェックを実行することはわかっていますが、後で(noobnessのために)このチェックを実行する方法はわかりません。

注2 - 私はこの方法でユーザーの電子メールにアクセスしていることを知っていますが、これはアクセスする適切な方法ですか?

MembershipUser useremail = Membership.GetUser(User.Identity.Name); 
ViewBag.Email = useremail.Email; 
+0

に関する注意2:はい、それは正しい方法です – PinnyM

答えて

8

あなたは電子メールで、既存のユーザー名を検索することができます。

String userName = MembershipProvider.GetUserNameByEmail(email) 

一致が見つからない場合は、userNameはnullになります。詳細については、hereを参照してください。

また、MembershipProviderにRequiresUniqueEmail = trueがある場合、このチェックはすでにthisページごとに実行されているはずです。

+1

素晴らしいです、ありがとうございます。私はRequiresUniqueEmailをtrueに設定していますが、ユーザーが自分の電子メールを変更できるように独自の関数を構築すると何が起こるのでしょうか? – Ecnalyr

+1

私はそれがテストして自分自身で見なければならないと信じています... – PinnyM

関連する問題