gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 20:11:56 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com