RazorViewEngineを拡張する剃刀カスタムビューエンジンを作成しました。その後、私はVS2010 MVC3テンプレートで初期化されたデフォルトプロジェクトで通常動作する/ Viewsフォルダの_ViewStart.cshtmlで定義した変数に突然アクセスできません。剃刀カスタムビューエンジンを作成した後に_ViewStartが機能しなくなる
私の質問は、剃刀カスタムビューエンジンで_ViewStartを有効にする方法です。
RazorViewEngineを拡張する剃刀カスタムビューエンジンを作成しました。その後、私はVS2010 MVC3テンプレートで初期化されたデフォルトプロジェクトで通常動作する/ Viewsフォルダの_ViewStart.cshtmlで定義した変数に突然アクセスできません。剃刀カスタムビューエンジンを作成した後に_ViewStartが機能しなくなる
私の質問は、剃刀カスタムビューエンジンで_ViewStartを有効にする方法です。
あなたのコードを見ることなく、私は特に間違って起こっていると言うが、私はあなたがやっていないどのようなアイデアを持っているかもしれないと思うRazorViewEngine
ためthe source見た後にすることはできません。あなたは、彼らがRazorView
コンストラクタの引数runViewStartPages
ためにtrue
の値を渡している見ることができます
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
var view = new RazorView(controllerContext, viewPath,
layoutPath: masterPath, runViewStartPages: true, viewStartFileExtensions: FileExtensions, viewPageActivator: ViewPageActivator)
{
DisplayModeProvider = DisplayModeProvider
};
return view;
}
:
これは次のようにCreateView
方法が見えるものです。 RazorView
クラスのRenderView
メソッドのthe sourceを見ると、_ViewStart
ファイルを検索し、それを実行階層にコンパイルする役割を果たすStartPageLookupDelegate
を作成するためにこのブール値パラメータが使用されています。
WebPageRenderingBase startPage = null;
if (RunViewStartPages)
{
startPage = StartPageLookup(webViewPage, RazorViewEngine.ViewStartFileName, ViewStartFileExtensions);
}
webViewPage.ExecutePageHierarchy(new WebPageContext(context: viewContext.HttpContext, page: null, model: null), writer, startPage);
だから、これはあなたがおそらく2つのうちのいずれかをやっている意味:
RazorViewEngine
のCreateView
メソッドをオーバーライドして、上記のようにしRazorView
を初期化しません。StartPageLookupDelegate
を作成することなくRazorView
のRenderView
メソッドをオーバーライドし、メソッドに渡します。これは、解決策を見つけるための正しい経路を教えてくれることを願っています。
私はこの質問が古いことを知っています。一般的に言えば、コードを見たり、Razorビューエンジンを拡張したときに何が上書きされたかを知ることは役に立ちます。 –