【发布时间】:2023-04-02 23:33:01
【问题描述】:
我喜欢 Microsoft 为 WebMatrix 产品 (http://en.wikipedia.org/wiki/Microsoft_WebMatrix) 中的内联编码开发的 Razor 语法。
既然 Visual Studio SP1 具有 RTM,是否可以(和/或计划)在 ASP.NET Webforms 中启用 Razor 语法?
【问题讨论】:
我喜欢 Microsoft 为 WebMatrix 产品 (http://en.wikipedia.org/wiki/Microsoft_WebMatrix) 中的内联编码开发的 Razor 语法。
既然 Visual Studio SP1 具有 RTM,是否可以(和/或计划)在 ASP.NET Webforms 中启用 Razor 语法?
【问题讨论】:
您可以使用Codeplex 提供的 RazorEngine 集成它。它允许您在 MVC 之外处理剃刀。尽管您无法获得从 MVC 版本的 Razor 获得的所有功能,例如 @Html 和 @Url 等。
【讨论】:
您可以在没有 MVC 的情况下使用 Razor 页面;这称为 ASP.Net WebPages。
只需将 .CSHTML 文件添加到普通的 ASP.Net 4.0 项目中即可。
我在我的博客中explained how this works。
【讨论】:
我敢说微软已经考虑过了,但没有关于这个问题的官方消息。由于您不应该在 ASPX 文件中包含 C# 或 VB 代码,因此您必须想知道将 Razor 支持添加到 Web 窗体的意义。后面的代码仍然是(部分)类文件。你不会把 Razor 放在那里,就像你不会把它放在网页或 MVC 中的类文件中一样。并且将服务器控件和所有好的声明性内容替换为 Html Helpers 消除了采用 Web 表单路线的关键原因之一,IMO。
【讨论】:
我们(ASP.NET 团队)目前没有计划支持使用 Razor 语法的 WebForms 页面模型。此外,我们不太可能认真考虑这一点,因为模型差异太大,无法使两者一起工作。
【讨论】:
<asp:GridView runat="server"/> 之类的控件。
这真的不难做到。现在正在处理它。从 CodePlex 获取 RazorEngine。它允许您在运行时将 Razor cshtml/vbhtml 文件编译成一个类。
然后,您可以获取该类,并在其 Render 方法中从 ASP.Net 服务器控件中使用它。这是从服务器控件主体中获取 HTML 的好方法。干净多了。
现在,您还可以添加一些可以从 Razor 调用的方法。例如,添加类似 RenderChild 的东西。此外,您可以将服务器控件本身设置为 Razor 可用的模型。然后您可以调用服务器控件。包括执行诸如抓取其中一个子控件并调用 Render 之类的操作。
【讨论】: