.net - Dot Net Core MVC:如何从视图中进行查询?
问题描述
我有一个表,每条记录都有一个 ParentId。我需要从我的索引视图中进行查询以显示父记录的名称而不是其 ID。但我不知道如何从视图中使用 _context 或如何处理这种情况。目前我只能看到模型本身中的父 ID。
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.CollectionName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ParentId) // I need this to be _context.Groups.FirstOrDefault(m=>m.id == item.ParentId)
</td>
<td>
@Html.DisplayFor(modelItem => item.CollectionHead)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
解决方案
您不应该将一个Context
或任何数据库逻辑传递给视图。
您的 ViewModel 应该包含您需要显示的所有必要数据。看起来在您的 ViewModel 中您正在通过 a ParentId
,但这在 View 中确实需要。因此,您可以将其更改为实际Parent
模型或将另一个字段添加到名为ParentName
. 然后你就可以在视图中做这样的事情,这取决于你去的建议:
@Html.DisplayFor(modelItem => item.Parent.Name)
或者
@Html.DisplayFor(modelItem => item.ParentName)
如果不查看您的 Controller 代码,很难帮助您像这样填充 ViewModel。但是,如果您的 LINQ 是正确的,那么您可以这样做:
viewModel.Parent = _context.Groups.FirstOrDefault(m=>m.id == item.ParentId);
或者
viewModel.ParentName = _context.Groups.FirstOrDefault(m=>m.id == item.ParentId).Name;
推荐阅读
- c++ - 嵌套别名模板的模板参数推导编译器差异
- android - 单击按钮时,我的应用程序崩溃
- python - 如何将具有列表的行的 pandas 列解压缩为列表中每个项目的新行?
- google-compute-engine - Spring Boot/Micrometer 向 GCP Stackdriver 发送指标
- c# - 对象的模型绑定集合作为 ASP.Net Core MVC 中模型的一个属性
- scala - Scala - 如何在地图上使用过滤器
- python - 使用 SQLObject ORM 过滤“列表中的值”
- elasticsearch - 为什么 Grafana ElasticSearch 查询在硬编码时可以工作,但在使用 Grafana 变量值替换时会失败?以及如何解决?
- c++11 - 将命名空间添加到平面缓冲区模式中的枚举类型
- angular - Angular 8:无法实例化循环依赖 - ActivatedRoute