我尝试使用以下方法使ViewEngine使用其他路径:
base.MasterLocationFormats = new string[] {
"~/Views/AddedMaster.Master"
};
在ViewEngine的构造函数中。它适用于aspx和ascx(PartialViewLocationFormats,ViewLocationFormats)。
我仍然需要在web.config或页面声明中提供MasterPage。但是,如果我这样做,则使用此声明,而不是ViewEngine中的声明。 如果我使用空的MasterLocationFormats,则不会抛出任何错误。这是不是在RC1中实现了吗?
编辑:
使用:
return View("Index", "AddedMaster");
而不是
return View("Index");
控制器中的工作。
答案 0 :(得分:1)
您的示例并不完整,但我猜测您的代码块存在于类级别而不是构造函数方法内部。问题是基类(WebFormViewEngine
)在构造函数中初始化“位置格式”属性,因此覆盖了您的声明;
public CustomViewEngine()
{
MasterLocationFormats = new string[] {
"~/Views/AddedMaster.Master"
};
}
如果您希望硬编码的母版只作为最后一次默认操作而启动,您可以执行以下操作:
public CustomViewEngine()
{
MasterLocationFormats = new List<string>(MasterLocationFormats) {
"~/Views/AddedMaster.Master"
}.ToArray();
}