asp.net – 使用Razor有点像回到经典的asp
|
我正在看Razor引擎,我想知道它与最初的经典ASP实现相比有什么“不同”,其中服务器端和前端代码在同一页面中. 我为什么要关心剃刀? 解决方法在传统的ASP中,您曾经在文件中包含业务代码(“从数据库中获取内容并对其进行操作”).在ASP.net MVC中 – 无论您使用的是ASPX还是Razor View Engine,您都在使用View Logic.像“我有20名员工,在桌子上显示”或“如果这个数字是负数,显示为红色而不是黑色”. 业务逻辑在控制器中并且更低.然后,控制器通过视图模型将业务数据传递给视图. View然后只有处理显示它的代码,这通常是微不足道的,但可以有一些自己的逻辑分支(“在用户区域设置中显示日期”或“在单独的表中显示男性和女性员工”) 你可能会错误地将业务逻辑放在这里.比如说,2008年之前雇用的员工有资格获得忠诚度证书.因此,您的表格中有一个“打印证书”列,仅显示这些列.简单但错误的方法是使用if语句: @if(employee.HireYear <= 2008) {
Html.ActionLink("Print Certificate","Certificate","Cheese",new { id = employee.Id },null);
}
这有效,但是错误,因为视图现在包含业务逻辑.正确的方法是向ViewModel添加一个新的bool字段.由于它包含IList< Employee>在此示例中,它表示创建另一个EmployeeWithCertificateEligibility类,或者更好,为符合条件且不合格的员工创建单独的列表.虽然将业务逻辑泄漏到视图中,但有时以HtmlHelper扩展方法的形式存在,这有点普遍. 编辑:您将它与“初始经典asp实现”进行比较.这可能意味着三件事:经典ASP,ASP.net WebForms或带有WebForms / ASPX视图引擎的ASP.net MVC.我的例子涉及前两个案例.如果你已经知道整个MVC的东西,只是想知道Webforms和Razor View Engine之间的差异:从概念上来说它们是相同的,Razor只是更简洁,更清晰. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Aspnet网站管理工具,Users表或aspnet_users表
- asp.net – HttpUtility.HtmlEncode逃避太多了?
- 在ASP.NET/IIS的URL中使用冒号(:)
- asp.net-mvc – ASP.NET MVC FluentValidation PartialView
- asp.net-mvc – 在没有模型的情况下手动将验证添加到文本框
- asp.net-mvc – MVC 4捕获所有路由从未到达
- asp.net-mvc – 我可以从服务器端的持票令牌中检索userinfo
- asp.net – 我如何使用AJAX来确定用户的会话是否已过期,然后
- asp.net-core – 是否可以将NoSQL用于Identity Server 4?
- asp.net – iTextSharp可以栅格化/导出为JPEG或其他图像格式
- asp.net – Googlebot导致.NET System.Web.HttpE
- asp.net验证文本框 – 至少有一个文本框必须包含
- asp.net-mvc – 调试已部署的azure应用程序
- asp.net – LINQ to SQL – 你的DataContext在哪
- asp.net-mvc – 如何将XML作为POST传递给ASP MVC
- asp.net – 在更新面板中自动上传文件到服务器第
- asp.net – 名称空间“CrystalDecisions.Web”中
- asp.net-mvc – 如何在MVC 3中基于XML文件动态创
- asp.net – AJAX和FormsAuthentication,如何防止
- 在Asp.net mvc5中使用用户名而不是电子邮件身份
