剃刀语法与ASPX语法的比较

16

最近我开始学习MVC3和Razor,并阅读了一些有关这些主题的文章,以更好地理解概念。

我一直在阅读Scott Guthrie的博客文章,其中提供了以下两个示例。第一个是ASPX语法,第二个是Razor语法:

enter image description here

enter image description here

这很不错,但作为ASPX和Razor的公平比较,我有点困惑。

自从发布ASP.NET以来,开发人员肯定使用过Repeater控件等东西,我从未见过像那样的ASPX语法示例。自经典ASP以来,我就没有见过那样的语法。

我一直认为将编程代码内联到标记文件中而不是代码后面的文件中是不好的做法。

有任何ASP.NET ASPX开发人员像这样编写代码吗?

4个回答

11

我认为你一定有些困惑。你的第一个例子不是传统的asp.net。它是MVC渲染引擎在razor之前使用的(MVC 1和MVC 2 - 我相信它被称为WebForms视图引擎)。

我非常确定你不能在传统的ASP.Net页面中使用foreach。(Veli的评论纠正了我)

使用MVC 3,你可以选择使用更易读的Razor视图引擎,就像你在这个例子中看到的那样。当然,在MVC 3中,你仍然可以选择另一种方式来完成,这是在创建初始项目时选择的选项。

你可以在这里阅读更多有关差异的信息


谢谢,我没有考虑到这只是一个MVC比较。我以为它展示的是aspx webforms和razor mvc之间的区别! - Curtis
5
是的,虽然你可以使用foreach,在“传统”的asp.net页面中上述代码也能正常显示,但这并不是一个好的做法。 - Veli Gebrev

6

有没有ASP.NET ASPX开发人员像这样编码的?

我怀疑没有。经典的WebForms开发人员使用服务器端控件,如重复器。

另一方面,ASP.NET MVC开发人员非常使用这个语法。实际上,你可以在ASP.NET MVC中使用展示模板(Display Templates),避免编写丑陋的foreach循环。


1
谢谢,我开始认为像这样的内联语法在Web表单中很常见。我没有考虑到MVC1/MVC2。 - Curtis

0
我一直认为将编程代码与标记文件内联,而不是放在代码后面的文件中,是一种不好的做法。
对于使用MVVM架构的C# WinForm/WPF开发人员来说,这是正确的。但是,我认为在ASP.NET MVC中将编程代码内联是一个好的做法。

-1

不要混淆编程代码和显示属性的代码。在标记文件中放置编程代码是不好的实践。然而,您展示的代码是用于制作标记的代码。

MVC应该被视为普通的MVC框架,所有逻辑代码都应该在控制器中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接