我刚刚开始学习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中显示自定义属性Avatar?
<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”类型的模型项。
非常感谢任何帮助。
由于
答案 0 :(得分:2)
您必须向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>