asp.net mvc 2:在WebFormViewEngine的FindView中设置母版页

时间:2010-09-29 15:33:33

标签: asp.net-mvc asp.net-mvc-2 viewengine

我遇到了自定义ViewEngine的问题。我尝试覆盖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 个答案:

答案 0 :(得分:1)

好的,我已经解决了。为了让它工作(至少在我的情况下),只需要删除默认的视图引擎:

ViewEngines.Engines.Clear();

然后添加新的(自定义):

ViewEngines.Engines.Add(new AreaViewEngine(this.MasterView));
瞧,它有效。