asp.net - 使用 Razor 有点像回到经典的 asp

标签 asp.net asp.net-mvc razor

我正在研究 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/

相关文章:

asp.net - 停止从 IIS 7.5 中的父 ASP.NET 应用程序继承 web.config

C# 单选按钮 oncheckchanged 未触发

c# - 如何访问当前开发服务器中 Controller 中的Images文件夹?

c# - 为 kendo ui 网格列定义自定义模板

jquery - 通过平滑滚动重定向到不同页面上的 div?

asp.net、url 重写模块和 web.config

c# - 如何增加分配的内存? {由于内存不足异常,函数评估被禁用。}

asp.net - 如何使用 contoso 主题在 Orchard CMS(v1.6) 中配置子菜单?

javascript - 编辑页面上的 ASP.Net MVC 5 Ajax 请求错误 __RequestVerificationToken 不存在

c# - ASP.NET MVC 3 : Output specific view for concrete implementation