2010-09-29 31 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