我们是否应该直接在 asp net mvc 视图中执行 LINQ

2024-02-06

浏览我们正在开发的项目(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(使用前将#替换为@)

我们是否应该直接在 asp net mvc 视图中执行 LINQ 的相关文章

  • 多行有多个提交按钮,我应该为每个按钮制作一个表单吗?

    我列出了大约 20 行 每行代表一个订单 每行需要有 3 个按钮 每个按钮单击将执行不同的操作 我有 3 个操作来处 理每个按钮发布请求 我只是不确定如何为每个按钮设置 Html 表单 tr td td tr
  • IEnumerable 流式传输

    我想做一些大致相当于下面的代码示例的事情 我想生成并提供数据流 而不必在任何时候将整个数据集都存储在内存中 看来我需要一些接受 Stream 的实现IEnumerable
  • LINQ 对特定属性的 Distinct()

    我正在玩 LINQ 来了解它 但我不知道如何使用Distinct https learn microsoft com en us dotnet api system linq enumerable distinct当我没有一个简单的列表时
  • SignalR 的浏览器兼容性如何?

    我在网上找到的最多的是 SignalR FAQ 其中指出 SignalR 在 IE6 7 中不起作用 但是 出于法律原因 我需要向客户提供受支持的浏览器列表 SignalR 有这样的经过测试的浏览器列表吗 Thanks 看起来微软已经发布了
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 从 ASP.NET MVC 将 HTML 表导出到 Excel

    我目前正在使用 ASP NET MVC 并且有一个操作方法 可以在视图中以表格格式显示一些报告 我需要通过单击视图中的按钮将同一个表导出到 Excel 文档 如何才能实现这一目标 您将如何为此创建 Action 方法 在您的控制器操作中 您
  • 从 viewModel 在 Asp.net MVC 3 上实现 Dropdownlist

    我是 net 和 mvc 平台的新手 我有很多 int 字段来存储一些下拉列表值 由于数据库大小 我创建了 int 类型的字段 所以我通过这种方法实现 dropdownlist 它有效 但我不这样做不知道在视图模型上存储值文本是否是正确的解
  • 如何分配Profile值?

    我不知道我缺少什么 但我在 Web config 文件中添加了 Profile 属性 但无法访问 Profile Item在代码中或创建一个新的配置文件 我今天也遇到了同样的问题 学到了很多东西 Visual Studio 中有两种项目 网
  • 如何将包含动态内容的捆绑包添加到 ASP.NET Web 优化

    我正在使用 SignalR 它映射到虚拟路径 signalr 上的 asp net 应用程序 SignalR 在应用程序上动态创建 JavaScript 代理集线器 以虚拟路径 signalr hubs 开始 所以网址 http myapp
  • App_Web_XXX.dll 中发生 System.NullReference 异常 - 部分视图中出现错误

    当登陆我的 MVC 页面之一时 我收到此错误 dll 名称中包含随机字符串 类型的第一次机会异常系统 NullReferenceException发生在 App Web cjmhrrqn dll 中 附加信息 未将对象引用设置为对象的实例
  • ASP.NET MVC 视图引擎解析顺序

    我创建了一个简单的 ASP NET MVC 1 0 版应用程序 我有一个 ProductController 它有一个操作索引 在视图中 我在Product子文件夹下创建了相应的Index aspx 然后我引用了 Spark dll 并在同
  • Pimp my LINQ:基于另一篇文章的学习练习

    我决定第一次尝试LINQ来尝试解决这个问题 https stackoverflow com questions 3447782 3447915 3447915 我第一次涉足 LINQ 的奇妙世界的结果如下 using System usin
  • ASP.NET MVC:FileStreamResult 返回太多字节?

    我正在调用 MVC 控制器方法 返回类型是FileStreamResult 在此方法中 我以字节数组的形式创建图像 我正在创建一个 MemoryStream 在构造函数中传递字节数组 然后 我在构造函数中返回一个新的 FileStreamR
  • .Net MVC 4 项目失败,并出现事件日志错误“模块 DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll 无法加载。数据是错误。”

    这不是 DotNetCore 项目 它是 MVC 4 项目 并且应用程序池已正确配置为使用 dotnet CLR v4 但在更新到新版本的 Windows 10 后 无论是内部版本还是新的周年更新 启动应用程序失败 事件日志显示以下错误 模
  • 使用 LINQ 展平嵌套字典

    所以我有一本形式的字典Dictionary
  • 将视频上传/保存到数据库或文件系统

    我以前从未尝试过保存视频 所以我对此了解不多 我知道如果视频很小 我可以转换为字节数组并保存到数据库 但是为了提高效率 我想了解如何将任何上传的视频保存到我的服务器文件中 然后只保存该文件的文件路径我的数据库表中的视频 我完全不知道如何开始
  • 保护 ASP.NET MVC 应用程序中的 ajax 调用的安全

    我有一个基于 ASP NET MVC 的应用程序 它允许根据用户进行不同级别的访问 当前的工作方式是 当用户访问页面时 会根据数据库进行检查以确定用户拥有的权限 然后根据用户拥有的访问级别选择视图 有些用户比其他用户看到更多数据并拥有更多可
  • ASP.NET MVC3 IIS7.5:Cache-Control maxage 始终为 0(不利于客户端缓存)

    我正在使用 Fiddler 测试我的网站 并注意到网络服务器总是返回 Cache Control private s maxage 0 用于动态内容 MVC 操作 这可以防止页面在客户端缓存 不知道是MVC还是IIS的问题 我该如何修复它
  • EditorFor 的最小值和最大值

    我一直在尝试这段代码来设置我的最小值和最大值EditorFor
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐