ASP.NET MVCがRazorを含むページを実行すると、最初に本体が実行されます(例:RenderBody
)。次に、レイアウト用のコードが実行され、一緒に織り込まれます。レイアウト実行とポストボディレンダリングの前にASP.NET MVCにフックがありますか?
これは、このblog postで文書化されています
System.Web.Mvc.RazorView.RenderView() System.Web.WebPages.WebPageBase.ExecutePageHierarchy()//非仮想 バージョンのSystem.Webを。 WebPages.WebPageBase.PushContext()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()//私たちのビューから仮想 バージョンthis.Execute()//生成されたコード
System.Web.WebPages.WebPageBase.PopContext
RenderSurrounding(virtualPath、body); //レンダリングのレイアウトは、 で、Viewのレンダリングプロセスに似ています。基本的には入れ子にすることができます。 Layout VerifyRenderdBodyOrSetions();
私は自分の意見やページ内の実際論理位置をトレースしたレイアウトにコードを追加します。
私はちょうどRenderBody
仕上げが実行直後 RenderSurroundingと前を実行するためのメソッドをフックすることができます方法はありますか?
'RenderBody'はレイアウトによって呼び出されます(少なくとも私が取り組んだカップルのMVCプロジェクトでは)。あなたはおそらく 'RenderSurrounding'をヘルパー(既に存在しない場合)にラップし、レイアウトの' RenderBody'の呼び出しの前後に追加することができます。 –
@ M.Babcock理想的には、レイアウト変更を伴わないフレームワークのフックを探しています –
しかし、あなたの質問には次のように書かれています:*ページ内の実際の論理位置をトレースするビューとレイアウトにコードを追加したい*とにかくレイアウトを変更しようとしているのですか? –