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 に答える