2010-09-29 29 views
1

我遇到了自定義ViewEngine的問題。我嘗試覆蓋FindView方法來設置主視圖,而不必在每個視圖頁面中定義它。asp.net mvc 2:在WebFormViewEngine的FindView中設置母版頁

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 
{ 
    if (string.IsNullOrEmpty(masterName)) 
    { 
     masterName = this.MasterView; 
    } 
    return base.FindView(controllerContext, viewName, masterName, useCache); 
} 

從調試器查看一切都看起來不錯:我沒有設置視圖頁上的財產的MasterPageFile,masterName進來一個空字符串,masterName被設置爲this.MasterView(其被通過初始化設置查看引擎)。

問題是:瀏覽器顯示「僅在引用母版頁的內容頁面中允許內容控件」。沒有調試器出現。

有誰知道爲什麼或者這是甚至是預期的行爲?

在此先感謝!

回答

1

好的,我解決了它。爲了得到它的工作(至少在我的情況)一個只是要刪除默認的視圖引擎:

ViewEngines.Engines.Clear(); 

,然後添加新的(自定義)之一:

ViewEngines.Engines.Add(new AreaViewEngine(this.MasterView)); 

等瞧,它作品。

+0

是的,我就是這麼做的。 – bzlm 2010-09-30 11:25:19

+0

是的......也許有一種方法可以改變viewengines或類似的東西的優先級,所以沒有必要清楚......誰知道;-) – 2010-10-06 07:25:48