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

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

既然Visual Studio SP1有RTM'd,是否有可能(和/或计划)在ASP.NET Webforms中使用Razor语法?

谢谢!

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

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

只需添加.CSHTML文件到一个正常的ASP.Net 4.0项目。

我解释了这是如何在我的博客工作。

您可以使用Codeplex提供的RazorEngine集成它。 它允许你在MVC之外处理razor。 虽然你没有得到从Razor的MVC版本获得的所有function,例如@Html@Url等等。

我敢说微软已经考虑过这个问题,但是在这个问题上没有官方的说法。 由于您不应该在ASPX文件中使用C#或VB代码,因此您不得不想要向Web窗体添加Razor支持。 后面的代码仍然是一个(部分)类文件。 你不会把Razor放在网页或MVC的类文件中。 交换服务器控件和Html Helpers的所有优秀的声明性内容将消除去Web窗体路线IMO的一个关键原因。

这真的不是很难做到。 现在正在处理它。 从CodePlex抓取RazorEngine。 它允许您在运行时将Razor cshtml / vbhtml文件编译到类中。

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

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