2012-02-06 73 views
1

我正在寫一個自定義主題的果園模塊。我希望將視圖中的數據傳回佈局,以根據視圖中確定的數據更改佈局。果園CMS從視圖到主題佈局傳遞數據

在我的示例中,我的主題中有一個左側導航欄 - 某些視圖應該能夠指示佈局不呈現此左側導航欄。

在標準的mvc 3中,我只是通過ViewBag傳遞值,但這似乎並沒有在Orchard中工作 - 我猜佈局代碼是在View被渲染之前執行的?

我已經研究過使用Shape來移動這些數據,但看起來它可能是我想要實現的一點點重量級。

像這樣傳遞數據作爲ViewBag的替代方案的最佳做法是什麼?

更新:在玩了一段時間後,我剛剛注意到TempData正在拾取佈局 - 任何人都可以解釋爲什麼TempData傳輸,但ViewData不是?從果園POV使用安全嗎?

回答

3

比這更容易...所有模板都可以訪問佈局形狀,這是一個動態對象。這意味着你可以隨時修改它,添加屬性等。 在你的特定情況下,抑制一個區域,你甚至可以將它設置爲null:區域只是形狀,而在頂部它們在佈局上展開。因此,如果您有一個名爲Foo的區域,將Layout.Foo設置爲null應該可以實現。作爲事實的事,我做的正是在我的主題之一,以抑制從我的錯誤頁面的側欄,而無需創建一個特定的部件層:

Layout.AsideFirst = null; 
Layout.AsideSecond = null; 
+0

稀釋是這好得多!乾杯! – 2012-02-06 21:14:56