因此,我在 ApplicationUser 类中添加了一个新参数,称为 SocialName 。我希望在用户登录时在右上角显示它。在那里,我们有这段代码:
@Html.ActionLink("Hello, " + User.Identity.GetUserName() + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
现在问题是,我想显示当前用户的用户名以外的参数。我发现将模型传递给部分视图有问题,因为我需要为每个动作执行此操作,否则我将使用 Null Reference 。你有什么想法怎么做?
答案 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+