asp.net-mvc - 如何在每个页面上显示成员(member)详细信息?

标签 asp.net-mvc razor-2

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

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

stackoverflow example

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

实现此目的的一种方法是创建一个抽象的“基”ViewModel 类,并让您通常使用的所有其他 ViewModel 继承自该类。这看起来有点麻烦,因为您创建的每个 ViewModel 都必须从基础继承。烦人吗?

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

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

但是对于这两种可能性,我被告知不建议这样做,因为它“不太像 MVC”。也就是说,它不符合我们在 MVC 中做事的自然方式。

我该如何解决这个问题? ViewModel 是正确的选择吗?

C# 或 VB.NET 都可以接受。

最佳答案

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

关于asp.net-mvc - 如何在每个页面上显示成员(member)详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203682/

相关文章:

asp.net-mvc - MVC 中来自数据库的动态菜单

c# - 如何使用 ActionLink MVC 5 执行以下 sql 查询?

asp.net-mvc - 如何在编辑器模板中获取序列/数组索引?

c# - MVC - 根据用户的权限禁用大约一半的字段

c# - 如何访问 MVC5 中 Kendo UI 网格内的 Entity Framework 域对象

c# - 没有秒和毫秒的 TimeOfDay

asp.net-mvc - 如何抑制 header 变化 :* when using OutputCacheProfiles

asp.net-mvc-4 - 使用 @Url.Content ("~"是否有好处)

asp.net-mvc-3 - 在MVC Razor View 中使用If语句

asp.net-mvc - 创建 knockout ViewModel 时使用 Razor 模型出现问题