MasterPageFile何时位于ASP.NET MVC WebForms ViewEngine中

时间:2009-11-25 22:59:16

标签: asp.net-mvc master-pages viewengine

视图/页面的MasterPageFile属性何时检查它是否存在于ASP.NET MVC WebForms视图引擎中?

我想要做的是让以下代码不输出错误:

  

分析程序错误消息:文件'/SomePlaceThatDosentExist/Site.Master'不存在。

在我的视图的.aspx文件中定义:

<%@ Page Language="C#" MasterPageFile="~/SomePlaceThatDosentExist/Site.Master" Inherits="System.Web.Mvc.ViewPage" >

我需要编写一些代码才能进入并定义有效的MasterPageFile属性?

我在我的自定义ViewPage类中尝试了以下视图继承

    public override string MasterPageFile
    {
        get
        {
            return base.MasterPageFile;
        }
        set
        {
            base.MasterPageFile = "~/RealPlace/Site.Master";
        }
    }

并尝试了以下内容(在我的视图继承的自定义视图页面类中)

    protected override void OnPreInit(EventArgs e)
    {
        base.MasterPageFile = "~/RealPlace/Site.Master";
        base.OnPreInit(e);
    }

在这两种情况下,都会显示上述错误。

据我所知,OnPreInit是ViewPage生命周期中最早的一点,所以它有可能在生命周期的早期阶段进行吗?

在你写作和回答之前注意:

  • 我知道返回视图(“ViewName”,“MasterPageName”);
  • 我了解动态母版页,但我想完成这项特定任务

2 个答案:

答案 0 :(得分:2)

解决问题的最佳方法可能是创建自定义VirtualPathProvider

答案 1 :(得分:-1)

如果要更改母版页的查找方式,可以实现自己的视图引擎:

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