2013-06-20 414 views
4

我希望能夠在每個頁面上顯示關於成員(「用戶」)的各種細節 - 即顯示某些登錄細節的部分。如何在每個頁面上顯示會員詳細信息?

例如,stackoverflow會在每個頁面上顯示我的用戶名,我的聲望和徽章。

stackoverflow example

因爲我們想堅持的ViewModels,它似乎是合理來填充視圖模型,並把它傳遞給每一頁。 ViewModel將包含成員對象(可能還有其他數據)。

做到這一點的一種方法是創建一個抽象的「基礎」ViewModel類,並擁有通常使用的所有其他ViewModel繼承它。這看起來有點麻煩,因爲你製作的每個ViewModel都必須從底部進行檢查。惱人的?

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

另一種方法是創建自定義WebViewPage。

但是對於這兩種可能性,我被告知它不被推薦,因爲它「不是很MVC-ish」。也就是說,它不符合我們在MVC中做事的自然方式。

我該如何解決這個問題? ViewModel要走嗎?

C#或VB.NET是可以接受的。

回答

1

雖然通常我會避免ViewBag,但我會在傳遞用戶信息時發生異常。在我的基本控制器我將設置爲ViewBag.UserInfoonActionExecuted成爲提供給所有的意見有以下:

@{ 
    var userInfo = ViewBag.UserIno as UserInfo; 
} 

如果你用的接口或抽象基去,你需要確保你查看模型填充用戶字段。這真的增加了視圖模型的開銷。

+0

我也討厭ViewBag,但我可以明白爲什麼這可能不是一個壞主意。謝謝。 –

+0

如果沒有別的辦法,我會同意的,但是如同其他答案所表明的那樣,兒童行動就是這裏的一種方式。你仍然很強類型,並有明確的SoC。 –

相關問題