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を使用したいと思いました。