MVC 5在共享布局中显示自定义配置文件

时间:2014-02-02 22:53:30

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

我刚刚开始学习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”类型的模型项。

非常感谢任何帮助。

由于

1 个答案:

答案 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.IdentityMicrosoft.AspNet.Identity.EntityFramework

您应该在视图中访问它...

<span class="avatar">@ViewBag.CurrentUser.Avatar</span>