我很好奇使用身份并在默认的EF框架数据库中保存Aspnetusers表中的用户信息。是否有一种方法可以将属性渲染为一个视图,而其他用户可以在应用程序运行时同时使用的所有用户可以查看。我遇到了一个问题,即我刚刚得到当前用户。我需要构建一个可以显示用户并具有其配置文件的链接的用户搜索子系统。
例如,我在Identity.Models中添加了属性
public` string displayName { get; set; }
public string age { get; set; }
public string description { get; set; }
在我的家庭控制器中
公共行动对() {
// Instantiate the ASP.NET Identity system
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(User.Identity.GetUserId());
// Recover the profile information about the logged in user
ViewBag.displayName = currentUser.displayName;
ViewBag.age = currentUser.age;
ViewBag.description = currentUser.description;
////////
var usr = User.Identity.Name;
// var usrName = ;
ViewBag.Message = usr;
return View();
}
在我的关于视图中
@using Microsoft.AspNet.Identity;
@{
ViewBag.Title = "About";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
<h3>@ViewBag.displayName</h3>
<h3>@ViewBag.age</h3>
<h3>@ViewBag.description</h3>
我可以看到当前的用户属性,但是我试图弄清ASP.NET如何与其他应用程序用户进行交互以查看其他配置文件?我知道该程序正在做我要做的事情(将当前用户的属性放在有关视图中),但我不知道下一步去哪里。
创建一个viewModel,让我们称其为 ProfileViewModel
这是您将向用户展示其个人资料中的用户,因此请填写您希望您向用户展示的属性(请确保是否有任何额外的属性也必须将其添加到ApplicationUser
),现在,一个用户单击其个人资料页面并希望查看他的个人资料,使用身份您可以获取其userId或将其存储在session
或cookie
中,因此,如果2个用户在sametime单击的个人资料中,每个配置文件都有自己的个人资料并非彼此显示(User.Identity.GetUserId()
)为您提供了USERID。
现在,在ActionResult
中,您需要做的是根据其UserId
获得ApplicationUser
的实体,并从ApplicationUser
填充ProfileViewModel
并将其传递给您的视图。
这就是您获得当前ApplicationUser
的方式:
var user = UserManager.FindById(User.Identity.GetUserId());
以及如何填充您的profileViewModel:
var profile = new ProfileViewModel
{
UserName = user.Username,
//so on...
};