ASP.NET MVC WebForms ViewEngineにあるMasterPageFileはいつですか
-
05-07-2019 - |
質問
ビュー/ページの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""
};
}
所属していません StackOverflow