剃刀网页渲染

时间:2011-11-14 19:40:07

标签: asp.net .net razor

我正在创建一个自定义网页基类(不要与Web表单或MVC混淆),继承自System.Web.WebPages.WebPage。我想要做的是在网页呈现时运行一​​些代码。在Web表单中,我会覆盖Render方法来执行此操作;但是,我所看到的所有可覆盖的方法都是RenderPage,它在当前渲染页面中呈现不同的页面。

是否有一个在渲染过程中运行的方法,或者是InitializePage方法的用途?

感谢。

1 个答案:

答案 0 :(得分:2)

Razor引擎并没有真正“渲染”。它基本上是一个代码生成器,可以将Razor页面转换为文字字符串(HTML)和代码块(表达式/代码)的可执行代码。它在生成的Execute()方法中执行此操作。

因此,当您创建自定义模板时,您可能可以覆盖Execute()方法并执行一些预处理或后处理,但是您无法真正影响生成的代码中的任何内容。

另一方面,WebForms中的Render()更像是一个基于组件的接口,因为它可能会拦截来自任何控件的渲染,每个控件都有一个负责生成自己输出的Render()方法。在Razor中,由于没有控件(缺少部分),因此没有多大意义。

IAC,我建议您查看ASP.NET Temporary Files文件夹中的Razor页面并查看源代码。这将使您非常了解生成的代码的外观以及您可以在自定义模板中拦截输出生成的内容。

相关问题