2012-10-18 56 views
14

經過一段時間的谷歌搜索,我有點困惑,如何在asp mvc 3中做到這一點。如何將viewmodel傳遞給佈局/母版頁?

因此,任務是爲幾個控制器的視圖有一個共同的佈局(或主?)頁面。所有的視圖都是強類型的...這個佈局頁實際上可視化一些強類型的對象。所以,我需要將該對象傳遞給佈局頁面以將其傳遞給`Html.RenderPartial()'或在頁面中正確呈現它。

文章Passing Data to View Master Pages (C#)(雖然舊的爲mvc2)提供了一個例子,提供一個基本的抽象控制器類,將模型傳遞給ViewData。這可能是治癒。

但是......

在某些線程我發現了一個方法可以使一個強類型的母版頁:

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %> 

那麼,有沒有在MVC3同樣的方法?或者將數據傳遞到佈局頁面的唯一方法是使用ViewBag或ViewData?

在閱讀what is the best way to bind ViewModel data to master page in asp.net-mvc後,我考慮過Darin的回答,但仍然認爲這一系列觀點的佈局相同,並且沒有理由違背DRY原則。

那麼,如何將強類型對象傳遞給佈局頁面?或者我混合了一些東西?

回答

17

這是一個有趣的辯論主題 - >將view models傳遞給主頁/佈局vs ViewBags

我使用ViewBags,所以我有查看所有模型的視圖層。從_layout.cshtml開始向上。任何視圖使用佈局..以及..該視圖模型只是繼承佈局..或任何視圖低於它..這是重複,直到你達到底層,通常是_layout ...

我的RavenOverflow project有一些示例代碼顯示了這一點。

+0

我寫了這段時間後 - 避免查看包。 http://completedevelopment.blogspot.com/2011/12/stop-using-viewbag-in-most-places.html上發佈的主題,如果需要使用部分視圖或子操作和緩存。 –

+0

這正是我想要的,但不確定要用我自己的雙手嘗試......雖然我開始用* Sanderson S,Freeman A.學習mvc,但是我沒有找到任何關於將模型傳遞給佈局雖然,正如我現在看到的,沒有任何東西阻止我這樣做。非常感謝 – horgh

+0

@AdamTuliper我傾向於不使用ViewBag和ViewData,但是害怕我必須.. – horgh

相關問題