假设我需要在我的应用的每个页面上打印已登录的用户。
目前,我正在使用模型继承,使用在我的基础模型中填充用户的ActionFilter,并显示它:(使用DisplayTemplate)
<% = Html.DisplayFor( x => x.CurrentUser ) %>
如何使用在MasterPage中使用
调用的PartialView<% = Html.Action("UserName", "BaseController") %>
这可以简化中小型(20型号)应用程序吗?
答案 0 :(得分:1)
如果您有一个基本的ViewModel(我认为这就是您所指的)并且不介意每次或使用方法属性进行分配,请参阅此处... BaseViewModel stuff
就我个人而言,我不介意有一个控制器方法返回包含用户信息的PartialView。然后,您只需在Site.Master中进行方法调用,无论您希望用户标记显示在哪里......
<% Html.RenderAction("UserInfo", "Home"); %>
答案 1 :(得分:1)
我认为BaseViewModels是不应该被允许存在的怪物。我想不出一个场景,他们不会因为各种页面都不需要的各种多余逻辑而变得臃肿。
RenderAction()
自MVC 1以及它最终获得MVC 3中的完全输出缓存支持以来已经走了很长的路。因为你获得了与RenderAction
完全相同的一堆组合,你没有得到它ViewModelBase我更喜欢它。
还要考虑ViewModelBases还需要ViewMasterModelBases才能运行,从而产生更加紧密耦合的逻辑,而且不容易被换掉。