2010-11-09 88 views
1

假設我需要在應用程序的每個頁面上打印記錄的用戶。部分視圖或模型繼承

目前,我同型號繼承下去,使用填充用戶在我基礎模型一個ActionFilter,並顯示它:(使用DisplayTemplate)

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

怎麼樣使用PartialView,叫使用

<% = Html.Action("UserName", "BaseController") %> 

難道這簡化事情小到中等(20款)的應用有點母版?

回答

2

我覺得BaseViewModels怪獸不應該允許存在。我想不出一種情況,他們不會因爲各種頁面所需的多餘邏輯而變得臃腫。

RenderAction()自MVC 1和MVC 3,它終於得到全輸出緩存支持因爲你獲得與RenderAction一大堆composibility的,你不與ViewModelBase我喜歡它得到很長的路要走。

還要考慮到ViewModelBases還需要ViewMasterModelBases才能生成更加緊密耦合的邏輯,這些邏輯不容易換出。

1

如果你有一個基礎視圖模型(我認爲是你指的是什麼)和不介意每次給它分配或使用方法屬性,在這裏看到... BaseViewModel stuff

個人我不會介意有一個控制器方法,該方法返回包含用戶信息的PartialView。然後,你就必須在你的Site.Master方法調用,無論你想標記顯示的用戶...

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