1

我在 MVC4 中有一个 razor .cshtml 视图,我想打印我的 userprofile 类的一个字段。我知道我可以从 User.Identity.Name 获取用户名,但我不知道如何在部分中访问当前登录用户的其他属性。我是否需要在我的控制器中执行此操作并在我的视图中引用它?如果是这样,是否有一个可用于所有视图的控制器,所以我没有在每个控制器中设置这个变量?是否有一种简单的方法可以访问视图中 UserProfile 模型类中定义的当前用户属性?给出一些上下文。我有我的模型...

 public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }

        //Added to round out requirements for site user profile
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Site { get; set; }
    }

我需要访问视图中的名字。如果我在控制器中获取它,那么我将需要在所有控制器中执行它,因为这是所有页面的页面部分。

4

2 回答 2

1

我决定将它放在会话变量中,因为它不是关键、敏感或影响应​​用程序的稳定性。在我的登录或注册控制器中,我将会话变量设置为...

var context = new UsersContext();
var curuser = context.UserProfiles.First(p => p.UserName == model.UserName);
Session["FName"] = curuser.FirstName;

我从 Pro ASP.NET MVC 和这篇文章中得到了这个。在我的 Razor 视图中,我使用了从这篇文章中得出的这个。

@HttpContext.Current.Session["FName"].ToString()
于 2012-09-26T18:36:59.813 回答
0

在为部分视图提供服务的控制器操作中,将 FirstName 放在 ViewBag 中。
如果您想要返回更多属性,则为它们创建一个 ViewModel 并使控制器操作返回该属性。

于 2012-09-26T06:57:29.097 回答