1

何时检查视图/页面的 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 生命周期中的最早点,那么是否有可能在生命周期中更早地进行?

在你写和回答之前注意:

  • 我知道 return View("ViewName", "MasterPageName");
  • 我知道动态母版页,但我想完成这个特定任务
4

2 回答 2

2

解决问题的最佳选择可能是创建一个自定义VirtualPathProvider

于 2009-12-01T13:05:46.220 回答
-1

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

public CustomViewEngine()
{
    MasterLocationFormats = new string[] {
        "~/RealPlace/Site.Master""
    };
}
于 2009-11-25T23:25:39.943 回答