fre*_*hie 8 asp.net asp.net-mvc razor
我正在看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);
}
Run Code Online (Sandbox Code Playgroud)
这有效,但是错误,因为视图现在包含业务逻辑.正确的方法是向ViewModel添加一个新的bool字段.由于它IList<Employee>
在此示例中包含一个,这意味着创建另一个EmployeeWithCertificateEligibility
类,或者更好,为符合条件且不合格的员工创建单独的列表.虽然将业务逻辑泄漏到视图中,但有时以HtmlHelper扩展方法的形式存在,这有点普遍.
编辑:您将它与"初始经典asp实现"进行比较.这可能意味着三件事:经典ASP,ASP.net WebForms或带有WebForms/ASPX视图引擎的ASP.net MVC.我的例子涉及前两个案例.如果您已经了解了整个MVC的内容,并且只是想知道Webforms和Razor View Engine之间的差异:从概念上讲它们是相同的,Razor只是更简洁,更清晰.
这就是你如何使用它.
我看到Razor的主要优点是它允许开发人员更加紧凑和富有表现力,其布局很像Spark或NHaml.
而不是写:
<% Foreach(var x....) { %>
<li><%=x.PropertyName%> (<%=x.AnotherProperty%>)</li>
<% } </%>
Run Code Online (Sandbox Code Playgroud)
你可以用更流畅的方式编写它:
@foreach(var x...) {
<li>@x.PropertyName (@x.AnotherProperty)</li>
}
Run Code Online (Sandbox Code Playgroud)
它更容易阅读,流程更好,在更复杂的情况下可以减少代码.
实际情况是,Razor甚至是经典的WebForms,您可以将代码和标记混合在一起.
由编码人员知道什么时候做好事或做坏事.
在视图中添加一些逻辑是不好的.也许不是.将您的整个逻辑写入View中很可能是错误的.如果它是一个简单的两页应用程序而不是企业应用程序,那该怎么办......我觉得你有所了解.:-)
这里有一个很好的写起来和其他的一些事情剃刀能做到这一点也使得它更强大的视图引擎比传统的ASP.
一个离别的想法.Razor是一个视图引擎.它旨在使我们的工作更容易制作视图.它不是为编码我们的整个应用程序逻辑而设计的.如果你是,你肯定做错了.
经典ASP并没有真正区分什么是视图引擎与什么是代码.
归档时间: |
|
查看次数: |
2256 次 |
最近记录: |