WebFormViewEngine中的MasterLocationFormats未使用?

时间:2009-03-13 21:12:52

标签: asp.net-mvc viewengine

我尝试使用以下方法使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");
控制器中的

工作。

1 个答案:

答案 0 :(得分:1)

您的示例并不完整,但我猜测您的代码块存在于类级别而不是构造函数方法内部。问题是基类(WebFormViewEngine)在构造函数中初始化“位置格式”属性,因此覆盖了您的声明;

public CustomViewEngine()
{
    MasterLocationFormats = new string[] {
        "~/Views/AddedMaster.Master"
    };
}

如果您希望硬编码的母版只作为最后一次默认操作而启动,您可以执行以下操作:

public CustomViewEngine()
{
    MasterLocationFormats = new List<string>(MasterLocationFormats) {
        "~/Views/AddedMaster.Master"
    }.ToArray();
}