質問

ビュー/ページの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(&quot; ViewName&quot ;,&quot; MasterPageName&quot;);
  • 動的なマスターページについては知っていますが、この特定のタスクを達成したいです
役に立ちましたか?

解決

問題を解決する最善の方法は、おそらくカスタム VirtualPathProvider

他のヒント

マスターページの検索方法を変更する場合は、独自のビューエンジンを実装できます。

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