PartialView或模型继承

时间:2010-11-09 21:58:18

标签: asp.net-mvc

假设我需要在我的应用的每个页面上打印已登录的用户。

目前,我正在使用模型继承,使用在我的基础模型中填充用户的ActionFilter,并显示它:(使用DisplayTemplate)

<% = Html.DisplayFor( x => x.CurrentUser ) %>

如何使用在MasterPage中使用

调用的PartialView
<% = Html.Action("UserName", "BaseController") %>

这可以简化中小型(20型号)应用程序吗?

2 个答案:

答案 0 :(得分:1)

如果您有一个基本的ViewModel(我认为这就是您所指的)并且不介意每次或使用方法属性进行分配,请参阅此处... BaseViewModel stuff

就我个人而言,我不介意有一个控制器方法返回包含用户信息的PartialView。然后,您只需在Site.Master中进行方法调用,无论您希望用户标记显示在哪里......

<% Html.RenderAction("UserInfo", "Home"); %>

答案 1 :(得分:1)

我认为BaseViewModels是不应该被允许存在的怪物。我想不出一个场景,他们不会因为各种页面都不需要的各种多余逻辑而变得臃肿。

RenderAction()自MVC 1以及它最终获得MVC 3中的完全输出缓存支持以来已经走了很长的路。因为你获得了与RenderAction完全相同的一堆组合,你没有得到它ViewModelBase我更喜欢它。

还要考虑ViewModelBases还需要ViewMasterModelBases才能运行,从而产生更加紧密耦合的逻辑,而且不容易被换掉。