我希望能够在每个页面上显示有关成员(“用户”)的各种详细信息 - 即显示一些登录详细信息的部分。
例如,stackoverflow 在每个页面上都会显示我的用户名、我的声誉和徽章。
由于我们喜欢坚持使用 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/