2010-10-11 132 views
1

我開發了一個自定義視圖引擎,用於實現我的asp.net mvc 2 web應用程序的主題。我現在面臨的問題是,在這個函數:ASP.NET MVC 2自定義視圖引擎

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 

參數「masterName」始終是空的,雖然的viewName不是空的,這一觀點具有關聯母版頁。

我想知道母版頁,所以我可以有一個默認的主題,並允許創建一個只改變主頁而不是內容頁的主題。所以當一個主題被選中時,我想使用主題的主頁但是默認主題的內容頁面。但我也希望能夠創建覆蓋母版頁和一些內容頁的主題,而不是其他的。在此,我只需要在頁面使用masterName,但是我收到一個空字符串:(

你有什麼想法?

提前感謝! 胡安

回答

1

參數「masterName 「是可選的默認視圖將使用在視圖中定義的母版頁,但如果指定了paraeter它將覆蓋這與提供的桅杆頁面

例如:。

Return View("viewname", Model); // uses default master page 
Return View("viewname", Model, "MasterName"); // users supplied MasterName 

因此,一種解決方案是將主名稱值留空,除非被選定的主題覆蓋,只有在View調用中覆蓋它。這不需要自定義視圖引擎

+0

因爲我想改變一些頁面,具體取決於他們我需要一個自定義視圖引擎。有什麼方法可以獲取在視圖中定義的主頁名稱? – Juan 2010-10-12 12:22:12

+0

它不是可用的東西,除非您深入研究Render方法中的WebFormViewEngine。除非被覆蓋,否則通常不需要。 – Clicktricity 2010-10-12 15:30:47