浏览我们正在开发的项目(ASP MVC 3.0),我在我的一个 ASPX 视图中看到了这部分代码:
var groups = Model.GroupBy(t => new { t.OrganizationUnitName, t.OrganizationUnitId, t.ServiceTermDate }).OrderBy(m =>m.Key.ServiceTermDate).ThenBy(m => m.Key. OrganizationUnitId);
foreach (var group in groups){
var data = group.Select(t => new
{
t.PersonFullName,
t.ServiceTermStatusName,
t.VisitTypeName,
SubType = ControllerHelper.LocalizedPersonSubType(t.PersonSubTypeName),
t.MedicalServiceName,
t.PersonId,
t.ServiceTermId,
t.Phone,
CountryName = t.Name,
PersonUniqueNumber = t.GetUniqueIdentifyingNumber(),
}).OrderBy(m => m.HoursFromMinutesFrom);
foreach(var item in data){%>
...............
//render table and table rows, for sample
<tr>
<td><%= item.PersonFullName%></td>
</tr>
..............
<%}%>
<%}%>
<%}%>
我不确定这是最佳编码实践,难道 LINQ 语句不应该放在控制器助手(或其他地方)中而不是直接放在视图中吗?如果我是对的,如何利用最佳编码实践来做到这一点?
先感谢您
看起来直接在视图中执行的 LINQ 不仅在错误的位置,而且还引发了另一个有趣的问题:如果我们将其放入服务层或控制器或控制器助手中,那么在这种情况下它将如何传递 - 匿名类型 IGrouping 到强类型视图?
就我个人而言,我不会在视图中使用 LINQ。在控制器中执行此操作以进行单元测试。
如果正在执行逻辑,在较大的应用程序中,我什至会将其移至包含所有 LINQ 查询的服务程序集。
您的观点应该尽可能基本。任何排序、分组或排序都应该在控制器中完成(最好借助辅助方法,该方法可重复用于跨应用程序的不同操作)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)