如何在ASP .NET MVC中获取有关当前用户的数据?
因此,我添加了一个新参数给我的ApplicationUser类,这叫做SocialName。我想在用户登录时显示在右上角。在那里,我们有这样的一段代码:如何在ASP .NET MVC中获取有关当前用户的数据?
@Html.ActionLink("Hello, " + User.Identity.GetUserName() + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
现在的问题是,我想比显示当前用户的用户名等参数。我发现将模型传递给部分视图有问题,因为我需要为每一个动作执行此操作,否则我将有空引用。你有什么想法如何做到这一点?
您可以通过Html.Action()方法轻松地在部分视图中显示有关用户的信息,而无需将信息传递给每个操作。例如:
你的页面/布局/ ...:
<ul class="nav navbar-nav navbar-right">
@Html.Action("HeaderUserInfo", "Common")
</ul>
CommonController.cs:
public ActionResult HeaderUserInfo()
{
var user = _workContext.CurrentUser; //get info about user
var model = new HeaderUserInfoModel
{
Username = user.Username,
UserId = user.Id
};
return PartialView(model);
}
和局部视图HeaderUserInfo.cshtml:
@model Models.Common.HeaderUserInfoModel
<span><i class="icon fa fa-user"></i> @Model.Username</span>
你可以从这个代码获取用户:
ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());
你可以有这个在您的控制器或查看用户,然后用所有属性将提供给你。
嗨这里是完全解决您的问题的链接。它似乎可以通过使用简单的扩展方法来获得输出。
请按照下面的链接,在提问者有同样的问题,并最终提供了良好的解决方案。希望它也会对你有所帮助。
https://forums.asp.net/t/1957500.aspx?How+to+access+custom+Identity+or+ApplicationUser+properties+
的** ** CurrentUser属性是无效的,它不存在。我应该在** CommonController **构造函数中初始化别的数据库吗?像用户管理器? – HostileException