我遇到了自定义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(通过初始化视图引擎设置)。
问题是:浏览器显示“仅在引用母版页的内容页面中允许内容控件。”没有调试器出现。
有谁知道为什么或者这是否是预期的行为?
提前致谢!
答案 0 :(得分:1)
好的,我已经解决了。为了让它工作(至少在我的情况下),只需要删除默认的视图引擎:
ViewEngines.Engines.Clear();
然后添加新的(自定义):
ViewEngines.Engines.Add(new AreaViewEngine(this.MasterView));
瞧,它有效。