2009-06-02 75 views
8

如何將ASP.NET MVC中的強類型對象放入主頁面中?如何將數據放入主頁面?

您是否有ViewModelBase類包含主頁面信息併爲每個視圖模型繼承它,還是有更好的方法?

+0

有沒有這樣做的有效方案?在一般視圖中應該在視圖中呈現特定的內容,主頁應該只提供適合視圖創建的公共元素。 – 2009-06-02 21:40:23

+0

也許我完全在這裏,但我想我會使用強類型視圖,如果我需要添加像當前登錄用戶名等東西到主頁面。如果不通過給頁面的ViewModel,我會怎麼做呢? – Alex 2009-06-02 21:42:38

+0

假設您使用的是標準身份驗證方法,例如表單身份驗證,然後可以做到這一點使用<%= HttpContext.Current.User.Identity.Name%> – 2009-06-02 21:49:26

回答

10

亞歷克斯,

我知道你在問的是,「哪裏是我的母版頁控制器?」

看看下面的鏈接。它解釋瞭如何創建一個「應用程序控制器」,這是一個可以被其他控制器繼承的抽象類,這樣你只需編寫一次將代碼推送到視圖中的代碼即可。

傳遞數據查看母版頁:
http://www.asp.net/learn/MVC/tutorial-13-cs.aspx

而且,看看下面的鏈接,其中介紹瞭如何實現在ASP.NET MVC局部視圖和子控制器:

部分請求中ASP.NET MVC
http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

3

這正是我使用的方法。有一個MasterViewData基類,其中包含可能對所有頁面都通用的信息,並用於呈現母版頁(不使用內置認證,頁面級消息時登錄用戶)。我所有其他的視圖數據類都是從它派生的。我也做了羅伯特提到的事情:我有一個基類控制器類,它覆蓋了View方法,它實際上處理將一些主頁面信息放入viewdata類。

我很好奇,如果有其他選擇,但這種做法絕對適合我。

0

我們使用類似的基本ViewData,尤其是對於大量內容導向的公共站點,您已經獲得了大量常見的UI內容。

我們用來注入公共位的技巧是使用ActionFilter在我們的控制器返回周圍注入MasterPageViewModel。這比擁有一個帶有重載視圖方法的特殊控制器類更清潔一點,因爲肯定存在你不需要它的地方。而整個構成就是繼承的東西。