4

SimpleMembershipProviderを使用するMVC4のUserProfileからカスタムプロパティを取得しようとしています。私のテーブルは次のとおりです。

 public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }

        //Added to round out requirements for site user profile
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Site { get; set; }
    }

ログイン時にセッション変数で、関心のあるuserprofileアイテムFirstNameを取得しようとすると

public ActionResult Login(LoginModel model, string returnUrl)
        {
            if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
            {
                var context = new UsersContext();
                var curuser = context.UserProfiles.First(p => p.UserName == User.Identity.Name);
                Session["FName"] = curuser.FirstName;

                return RedirectToLocal(returnUrl);
            }

            // If we got this far, something failed, redisplay form
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
            return View(model);
        }

エラーが発生します:シーケンスにvarcuruser行を参照する要素が含まれていません。User.Identity.Nameをmodel.Usernameに置き換えると、正常に機能します。必要な場所で使用できるので、User.Identity.Nameを使用したいと思いました。

4

1 に答える 1

5

タイトルにあなたの質問への答えがあります:

HttpContext.User.Identity はいつ設定されますか?

お役に立てれば

于 2012-09-26T20:08:23.520 に答える