如何使用 Linq 将模型解析到同一页面上的两个不同区域

问题描述 投票:0回答:1

我正在尝试创建一个具有两个不同区域的页面。一个区域供办公室人员使用,另一个区域供现场人员使用。我不知道如何使用相同的模型来做到这一点。

我可以使用:

<ul>
 @foreach (var item in Model)
{
<li> <a class="nav-link text-dark" asp-area="" asp-controller="Staff" asp-action="Index"> @Html.DisplayFor(modelItem => item.Name)</a></li>
}
</ul>

但这会将所有项目放入无序列表中。我想将它们隔离为仅具有“Office”的 GroupName 属性值

然后,我想在同一页面上执行完全相同的操作,查找 GroupName 属性值为“Field”的项目。

这是需要在 Linq 中完成的事情吗?如果是这样,怎么办?或者有更好的方法吗?

linq
1个回答
0
投票

尝试重复该块并为每个块添加一个

.Where()
条件,例如:

<ul>
 @foreach (var item in Model.Where(item => item.GroupName == "Office"))
{
  <li> <a class="nav-link text-dark" asp-area="" asp-controller="Staff" asp-action="Index"> @Html.DisplayFor(modelItem => item.Name)</a></li>
}
</ul>

<ul>
 @foreach (var item in Model.Where(item => item.GroupName == "Field"))
{
  <li> <a class="nav-link text-dark" asp-area="" asp-controller="Staff" asp-action="Index"> @Html.DisplayFor(modelItem => item.Name)</a></li>
}
</ul>

如果

Model
是延迟执行
IQueryable<>
IEnumerable<>
,则在上面的代码中它将被评估两次。为了避免这种情况,您可以首先使用
var ItemList = Model.ToList();
强制执行一次,并将这些结果用作源。

© www.soinside.com 2019 - 2024. All rights reserved.