如何在每个页面上显示会员详细信息?

Row*_*man 4 asp.net-mvc razor-2

我希望能够在每个页面上显示有关成员("用户")的各种详细信息 - 即显示一些登录详细信息的部分内容.

例如,stackoverflow在每个页面上显示我的用户名,我的声誉和徽章.

stackoverflow示例

由于我们喜欢坚持使用ViewModel,因此填充ViewModel并将其传递给每个页面似乎是明智的.ViewModel将包含成员对象(可能还包含其他数据).

一种方法是创建一个抽象的"基础"ViewModel类,并让您通常使用的所有其他ViewModel都从中继承.这看起来有点麻烦,因为你制作的每个ViewModel都必须从基础中继承.恼人的?

另一种方法是使用HttpContext.User.Identity.

另一种方法是创建自定义WebViewPage.

但是对于这两种可能性,我被告知不推荐它,因为它"不是非常MVC-ish".也就是说,它不符合我们在MVC中做事的自然方式.

我怎么能解决这个问题?ViewModels是否可行?

C#或VB.NET是可以接受的.

kaz*_*hid 6

创建一个部分返回用户信息的控制器,在布局页面中使用Html.Action()调用控制器.我很久以前写过的一篇博文,您可以查看:http: //kazimanzurrashid.com/posts/viewdata-or-viewbag-avoid-dependency-pollution-in-asp-dot-net-mvc-controller