我们可以在ASP.NET Webforms(* .aspx页面)中使用Razor语法吗?

时间:2011-03-10 19:32:57

标签: razor webforms

我喜欢微软为其WebMatrix产品(http://en.wikipedia.org/wiki/Microsoft_WebMatrix)中的内联编码开发的Razor语法。

现在Visual Studio SP1已经实现了RTM,是否可以(和/或计划)在ASP.NET Webforms中启用Razor语法?

5 个答案:

答案 0 :(得分:45)

我们(ASP.NET团队)目前没有计划使用Razor语法支持WebForms页面模型。此外,我们不太可能认真考虑这一点,因为模型太过不同,无法使两者协同工作。

答案 1 :(得分:29)

您可以使用没有MVC的Razor页面;这称为ASP.Net WebPages。

只需将.CSHTML文件添加到普通的ASP.Net 4.0项目中即可。

我在博客中explained how this works

答案 2 :(得分:5)

您可以使用Codeplex提供的RazorEngine进行整合。它允许您在MVC之外处理剃刀。虽然您没有从MVC版本的Razor获得所有功能,例如@Html@Url以及其他功能。

答案 3 :(得分:0)

我敢说微软已经考虑过了,但没有关于这个问题的官方消息。由于您不应该在ASPX文件中使用C#或VB代码,因此您不得不怀疑向Web窗体添加Razor支持的重点。后面的代码仍然是(部分)类文件。你不会把Razor放在那里,而不是把它放在Web Pages或MVC的类文件中。并且交换服务器控件和Html Helpers的所有好的声明性内容消除了进入Web窗体路由的关键原因之一,IMO。

答案 4 :(得分:0)

这真的不难做到。现在正在努力。从CodePlex获取RazorEngine。它允许您在运行时将Razor cshtml / vbhtml文件编译为类。

然后,您可以使用该类,并在其Render方法中的ASP.Net服务器控件中使用它。这是将HTML从服务器控件的主体中取出的好方法。更清洁。

现在,您还可以添加一些可以从Razor调用的方法。例如,添加像RenderChild这样的东西。此外,您可以将服务器控件本身设置为Razor可用的模型。然后,您可以调用服务器控件。包括抓住其中一个子控件并调用Render。