私はASP.NET MVC 3を使用しています。「インターネットアプリケーション」オプションを使用して、MVCプロジェクトのVisual Studioプロジェクトテンプレートに本質的に無料で付属しているものを使用しています。基本的に、これによりフォーム認証が導入され、ユーザーのログインなどを管理するためのいくつかの基本的な要素が提供されます。
また、いくつかのカスタム フィールドを保存するために、これと一緒に Web プロファイルを使用しています。すべてが順調に進んでいました。SuperFunProfile
インスタンスのラッパーとして使用してProfile
、プロファイル プロパティを簡単に取得できるようにします。
ユーザーのサインアップ後すぐにプロファイルのプロパティを設定したいと思うまで。
私が解決できない問題はthis.Request.RequestContext.HttpContext.Profile
、匿名ユーザーのプロファイルが含まれていることです。サインアップしてサインインする必要があるユーザーの新しいプロファイルを取得するにはどうすればよいですか?
public ActionResult SignUp(SignUpModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus = this.MembershipService.CreateUser(model.UserName, model.Password, model.Email);
if (createStatus == MembershipCreateStatus.Success)
{
this.FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
var profile = new SuperFunProfile(this.Request.RequestContext.HttpContext.Profile);
profile.DisplayName = model.UserName;
profile.Save();
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError(string.Empty, AccountValidation.ErrorCodeToString(createStatus));
}
}
Membership と Web.Profile を調べてみましたが、目標に近づくようなものは見当たりません。
Web.Profile を使用するのではなく、自分自身を DB に格納する ProfileModel を作成する必要があるのでしょうか。MembershipUser.ProviderUserKey
サインアップ時に ProfileModel を簡単に作成できるようにキーを設定できると思います。