如何在ASP .NET MVC中获取有关当前用户的数据?

如何在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>  
+0

的** ** CurrentUser属性是无效的,它不存在。我应该在** CommonController **构造函数中初始化别的数据库吗?像用户管理器? – HostileException

你可以从这个代码获取用户:

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+