我正在尝试将一些自定义身份配置文件信息添加到我的asp mvc 5应用程序中,并且遇到了麻烦。这是我第一次使用MVC或身份(来自Web Forms),经过数小时的研究,我仍然感到难过。
我按照http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx的指南,添加了我应该做的一切。
模型
Models/IdentityModel.cs
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
AccountViewModel
Models/AccountViewModel
...
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Middle Name")]
public string MiddleName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
我还修改了帐户控制器和注册视图以请求并保存新信息。注册时,没有问题,我的应用程序正确地将名字,中间名和姓氏保存到dbo.AspNetUsers(我可以在SQL Server Management Studio中看到数据)。
但是,我完全无法检索到任何此类信息。我试图通过在控制器中执行以下操作来遵循指南:
var currentUserId = User.Identity.GetUserId();
var manager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(User.Identity.GetUserId());
但是当我输入“currentUser。”时,我看到的只是“AccessFailedCount,Claims,Email,EmailConfirmed”等.Intellisense不会显示与第一个,中间名或姓氏相关的任何内容。我试图连接到dbo.AspNetUsers并自己拉东西,但它似乎不想让我这样做。
我做错了什么?我修改过的个人资料正在保存,但我不知道如何访问它正在保存的内容。
答案 0 :(得分:0)
您需要通过 OwinContext 访问 UserManager 。
public ApplicationUserManager UserManager
{
get
{
return HttpContext.GetOwinContext()
.GetUserManager<ApplicationUserManager>();
}
}
然后您可以调用 UserManager.FindById 并访问自定义属性。
ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());
string middleName = user.MiddleName;