Sam*_*ron 8 c# razor asp.net-mvc-3
当ASP.NET MVC执行包含Razor的页面时,它将首先运行主体,例如RenderBody方法,然后它运行布局的代码并将其编织在一起.
这篇博文中记录了这一点:
System.Web.Mvc.RazorView.RenderView()System.Web.WebPages.WebPageBase.ExecutePageHierarchy()//非虚拟版本System.Web.WebPages.WebPageBase.PushContext()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()//virtual version this.Execute()//从我们的View
System.Web.WebPages.WebPageBase.PopContext
RenderSurrounding(virtualPath,body)生成的代码; //渲染布局,类似于View的渲染过程,基本上你可以有嵌套的Layout VerifyRenderdBodyOrSetions();
我想在我的视图和布局中添加代码,以跟踪页面中的实际逻辑位置.
有没有办法可以在 RenderSurrounding 之前和刚 RenderBody完成执行之后连接一个方法来运行?
您可以通过为ExecutePageHierarchy页面创建不同的基本类型来覆盖页面本身的方法,给定如下WebViewPage实现:
public abstract class CustomViewPage<TModel> : WebViewPage<TModel>
{
public override void ExecutePageHierarchy()
{
Output.Write("Before");
base.ExecutePageHierarchy();
Output.Write("After");
}
}
Run Code Online (Sandbox Code Playgroud)
您将在实际页面内容之前和之后(因此在布局内)获得输出.我不确定那些你在寻找什么,你是不是想在</body>我想象中编写脚本?
主要是使用这种基本类型只用于主.cshtml(不是任何部分或布局)它将Output.Write围绕RenderBody布局的输出呈现那些(实际上,就在内部).
您可以在中设置每个目录的基本类型web.config.
| 归档时间: |
|
| 查看次数: |
3124 次 |
| 最近记录: |