【问题标题】:Razor Web page RenderingRazor 网页渲染
【发布时间】:2011-11-14 19:40:06
【问题描述】:

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

是否有在渲染期间运行的方法,或者 InitializePage 方法的用途是什么?

谢谢。

【问题讨论】:

  • 根据您的需要,您可以创建一个基本控制器类并在OnActionExecutedOnActionExecuting 中执行您的逻辑。
  • 不是MVC,Razor网页,网页版。
  • 页面呈现时你想做什么?顺便说一句,我是网页和 Razor 的 PM。
  • @Erik 对我来说,我更多的是研究;可能会在它周围包裹一些架构,不是为了改变它的工作方式,而是为了我所有的框架都可以利用。不过没什么关键的。顺便说一句,很棒的产品。你们做得很好。
  • 谢谢!如果您有任何具体问题,请随时给我发推文@HumanCompiler 或给我发邮件。

标签: asp.net .net razor


【解决方案1】:

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

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

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

IAC,我建议您查看 ASP.NET 临时文件文件夹中的 Razor 页面并查看源代码。这将使您很好地了解生成的代码是什么样的,以及您可以在自定义模板中执行哪些操作来拦截输出生成。

【讨论】:

    猜你喜欢
    • 2019-06-20
    • 2019-12-19
    • 2018-03-14
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2015-02-02
    相关资源
    最近更新 更多