【问题标题】:LINQ in MVC Razor ViewMVC Razor 视图中的 LINQ
【发布时间】:2014-05-07 13:43:23
【问题描述】:

我已经编写了一个有效的 MVC Web 应用程序。我开始使用 SQL 语句返回 DB,但已更改为 LINQ。我有一个显示 IT 部门所有工作的视图和一个允许用户选择分配给他们的任务的按钮。

我正在尝试从文件的模型列表中获取 IT 工作人员列表,如下所示

{@IEnumerable<@AERS_WEB.Models.clsFileDetails> fls = @Model.FILES.Where(q=>q.DEVELOPER=="ac")}

但我得到一个错误

使用泛型类型“System.Collections.Generic.IEnumerable”需要 1 个类型参数

我也试过

{@List<@AERS_WEB.Models.clsFileDetails> fls = @Model.FILES.Where(q=>q.DEVELOPER=="ac")}
{@IList<@AERS_WEB.Models.clsFileDetails> fls = @Model.FILES.Where(q=>q.DEVELOPER=="ac")}

【问题讨论】:

  • 我真的强调不要直接从视图访问数据库。这违反了 MVC 架构的目的。而是在您的模型(或更好:ViewModel)中创建一个名为 GetWorkers() 的方法,该方法返回一个 List.

标签: c# asp.net-mvc linq razor


【解决方案1】:

试试这个:

@{
    IEnumerable<AERS_WEB.Models.clsFileDetails> fls =
        Model.FILES.Where(q=>q.DEVELOPER=="ac").ToList();
 }

虽然看起来AERS_WEB.Models.clsFileDetails 不是一个类型。

试着这样想:

IEnumerable<int> = new List<int>();

IEnumerable<SomeClass> = new List<SomeClass>();

顺便说一句,请记住,从视图中查询数据库是一个坏习惯,它会扰乱 MVC 模式。

并确保Model.FILES.Where(q=&gt;q.DEVELOPER=="ac") 返回的项目类型为:AERS_WEB.Models.clsFileDetails

【讨论】:

  • clsFileDetails 是一个类,模型列表 FILES 也是它的一个列表。返回将是 clsFileDetails。您的代码运行良好。非常感谢
  • 出于兴趣,我如何让我的视图使用过滤列表而不是模型? @if(@ViewBag.DEVELOPERONLY) { showFiles=developersFiles; } else { showFiles = Model.FILES; } @foreach (AERS_WEB.Models.clsFileDetails f in showFiles)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 2018-04-08
  • 2011-03-11
相关资源
最近更新 更多