0

私は Asp .net MVC 3 を独学しています。ユーザー アカウント システムを組み込む必要がある段階に達しました。私は標準の Asp .net MVC 3 メンバーシップ プロバイダーから始めましたが、ほとんどの部分でそれに固執し、他のすべてのユーザーの詳細をユーザー テーブルにリンクされた別のテーブルに格納したいと考えています。

ただし、登録時に次の 2 つの機能を追加したいと思います。1) 確認メール 2) T&C に同意します。

カスタム メンバーシップ プロバイダーを構築せずにこれを行う簡単な方法はありますか?

4

2 に答える 2

3

個人的には、確認メール/利用規約がメンバーシップ プロバイダーの一部であるべきだとは思いません。

通常は、 AccountController (または同等のもの) でそのようなことを処理します。

たとえば、登録アクションがある場合、メンバーシップ プロバイダーを使用してユーザーを保存し、すべてが問題ないように見えたら、確認メールを送信します (コードはアクションからトリガーされます)。

于 2012-07-07T08:50:00.947 に答える
1

次のように、アカウント モデル (Models ディレクトリの AccountModels.cs) の RegisterModel クラスに同意する利用規約を追加できます。

[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }

登録ビューを更新して、この表示を追加して、チェック ボックスと必要なテキストが表示されるようにする必要があります。

残念ながら、これは であり、チェックされていないのは null ではなく false であるため、[Required]属性を単純に使用することはできません。boolカスタム bool 必須属性を作成する方法はいくつかありますが、少し手間がかかります。次のように、Account Controller の Register メソッドにチェックを追加して、チェックされているかどうかを確認する方が簡単な場合があります。

if(model.AgreeTandC == false)
{
    ModelState.AddModelError("AgreeTandC", "You must agree to the Terms and Conditions");
    return View(model);
}

私はModelState.AddModelError以前にそのようなものを使用したことはありませんが、うまくいくと思います(エラーをユーザーに表示します)それ以外の場合は、それを置き換えて、ViewBag.Error = "You must agree to the Terms and Conditions";これを登録ビューモデルに追加します

電子メールに関しては、難しいことではありません。MvcMailerのような電子メールを送信する機能を追加する必要があります 。Membership.CreateUserまた、アカウント コントローラーの Register メソッドの行を変更して、ユーザーを承認しないようにする必要があります。

Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, false, null, out createStatus);

そうあるべきだと思います。次にcreateStatus == MembershipCreateStatus.Success)、確認 GUID を含む電子メールを送信する場合string confirmationGuid = user.ProviderUserKey.ToString();

また、確認 ID を受け入れる方法を作成する必要があります (メールのリンクをクリックしたとき)。

メールの部分について簡単に触れただけですが、登録メールを詳細に送信するオンラインのブログはたくさんあります。

于 2012-07-07T09:52:19.893 に答える