我刚刚开始学习MVC 5,我正在实现自定义身份。
所以我创建了此类:
public class ApplicationUser : IdentityUser
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
public string Avatar { get; set; }
}
现在我的问题似乎真的很简单,但是我花了几个小时而没有找到解决方案。
我想做的是在部分视图中显示自定义用户信息。
在_layout.cshtml中,我有一个部分视图:
<div class="top-nav clearfix">
@Html.Partial("UserInfo")
</div>
我想做的是在UserInfo.cshtml中显示自定义属性头像?
<span class="username">@User.Identity.GetUserName()</span>
<span class="avatar">@?????forAvatar ?</span>
我已经尝试在UserInfo.cshtml中定义模型:
@model Models.ApplicationUser
// and using it like this in my view
<span class="avatar">@ViewData.Model.Avatar</span>
但是,当我单击作者页面
时,这给我带来了错误传递到字典中的模型项是'system.collections.generic.list'1 [models.author]'的类型,但是该词典需要类型'models.applicationuser'的模型项。
任何帮助将不胜感激。
谢谢
您必须向UserManager
询问ApplicationUser
对象。为简单起见,我们可以将其塞入ViewBag
...
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext());
var user = userManager.FindById(User.Identity.GetUserId());
ViewBag.CurrentUser = user;
(您需要添加一些using
语句以引入一些名称空间,包括Microsoft.AspNet.Identity
和Microsoft.AspNet.Identity.EntityFramework
)
,您应该可以在视图中访问它...
<span class="avatar">@ViewBag.CurrentUser.Avatar</span>