我正在研究 Razor 引擎,我想知道它与最初的经典 ASP 实现(服务器端和前端代码位于同一页面中)相比有何“不同”。
我为什么要关心 Razor?
最佳答案
在经典 ASP 中,您的文件中曾经有业务代码(“从数据库中获取内容并对其进行操作”)。
在 ASP.net MVC 中 - 无论您使用 ASPX 还是 Razor View 引擎 - 您都在处理 View 逻辑。诸如“我有 20 名员工,将它们显示在表格中”或“如果该数字为负数,则将其显示为红色而不是黑色”。
业务逻辑位于 Controller 及更低层。然后 Controller 通过 View 模型将业务数据传递给 View 。然后, View 只有处理显示它的代码,这通常很简单,但可以有一些自己的逻辑分支(“在用户区域设置中显示日期”或“在单独的表中显示男性和女性员工”)
您可能会犯将业务逻辑放在这里的错误。比如说,2008 年之前雇用的员工有资格获得忠诚证书。因此,您的表格有一列“打印证书”,仅针对这些证书显示。简单但错误的方法是放置一个 if 语句:
@if(employee.HireYear <= 2008) {
Html.ActionLink("Print Certificate","Certificate","Cheese",
new { id = employee.Id }, null);
}
这可行,但错误,因为 View 现在包含业务逻辑。正确的方法是向 ViewModel 添加一个新的 bool 字段。因为它包含 IList<Employee>
在此示例中,这意味着创建另一个 EmployeeWithCertificateEligibility
类,或者更好,为合格和不合格的员工制定单独的名单。尽管业务逻辑溢出到 View 中是很常见的,有时以 HtmlHelper 扩展方法的形式。
编辑:您将其与“初始经典 asp 实现”进行比较。这可能意味着三件事:经典 ASP、ASP.net WebForms 或带有 WebForms/ASPX View 引擎的 ASP.net MVC。我的例子涉及前两种情况。如果您已经了解整个 MVC 内容,并且只是想知道 Webforms 和 Razor View Engine 之间的差异:从概念上讲,它们是相同的,只是 Razor 更简洁、更简洁。
关于asp.net - 使用 Razor 有点像回到经典的 asp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105942/