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

时间:2017-07-06 18:33:53

标签: c# .net asp.net-mvc razor identity

因此,我在 ApplicationUser 类中添加了一个新参数,称为 SocialName 。我希望在用户登录时在右上角显示它。在那里,我们有这段代码:

@Html.ActionLink("Hello, " + User.Identity.GetUserName() + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })

现在问题是,我想显示当前用户的用户名以外的参数。我发现将模型传递给部分视图有问题,因为我需要为每个动作执行此操作,否则我将使用 Null Reference 。你有什么想法怎么做?

3 个答案:

答案 0 :(得分:2)

您可以通过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>    

答案 1 :(得分:0)

您可以从此代码中获取用户:

ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());

您可以在控制器或视图中使用此功能,然后将为您提供具有所有属性的用户。

答案 2 :(得分:0)

您好这里是完全解决您的问题的链接。它似乎可以通过使用简单的扩展方法获得输出。

请遵循以下链接,因为提问者有同样的问题,最后提供了良好的解决方案。希望它对你也有帮助。

https://forums.asp.net/t/1957500.aspx?How+to+access+custom+Identity+or+ApplicationUser+properties+