如何根据 Razor 页面中主 table 中的项目 ID 检索子 table 的项目?
How can I retrieve items for a sub-table based on an item ID in the master table in a Razor page?
我有一个 Razor 页面视图,它仅从从模型 属性 检索到的列表中生成 table 个项目,如下所示:
@page
@model Agency.Pages.TypeManagement.CategoryType.IndexModel
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<p>
<a asp-page="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Category[0].CategoryCode)
</th>
<th>
@Html.DisplayNameFor(model => model.Category[0].CategoryName)
</th>
<th>
@Html.DisplayNameFor(model => model.Category[0].CategoryDescription)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Category) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CategoryCode)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryDescription)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@item.CategoryId">Edit</a> |
<a asp-page="./Details" asp-route-id="@item.CategoryId">Details</a> |
<a asp-page="./Delete" asp-route-id="@item.CategoryId">Delete</a>
</td>
</tr>
}
</tbody>
</table>
我想做的是在table中的每一项输出一个sub-table,如果sub-table中存在任何item,则根据ID母版中的项目 table。我知道我可以在 Razor 语句中使用 属性,如 Model.Category,但是否也可以根据当前项的 ID 等值从视图中检索数据?
所以我想要结束的是这样的:
@foreach (var item in Model.Category) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CategoryCode)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryDescription)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@item.CategoryId">Edit</a> |
<a asp-page="./Details" asp-route-id="@item.CategoryId">Details</a> |
<a asp-page="./Delete" asp-route-id="@item.CategoryId">Delete</a>
</td>
<table>
<tbody>
@foreach (var subitem in Model.SubCategory) {
<tr>
<td>
@Html.DisplayFor(modelItem => subitem.CategoryCode)
</td>
<td>
@Html.DisplayFor(modelItem => subitem.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => subitem.CategoryDescription)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@subitem.CategoryId">Edit</a> |
<a asp-page="./Details" asp-route-id="@subitem.CategoryId">Details</a> |
<a asp-page="./Delete" asp-route-id="@subitem.CategoryId">Delete</a>
</td>
</tr>
}
</tbody
</table
</tr>
}
但我需要根据当前主行中项目的 ID 过滤 SubCategory 项目 table。
根据当前 item/row 的标识符过滤子类别。
@foreach (var item in Model.Category) {
//...omitted for brevity
var subItems = Model.SubCategory.Where(x => x.CategoryId = item.Id);
if(subItems.Any()) {
<table>
<tbody>
foreach (var subitem in subItems) {
//...omitted for brevity
其中 item
来自外部 foreach
循环。
引用Using the Razor Syntax: Combining Text, Markup, and Code in Code Blocks
我有一个 Razor 页面视图,它仅从从模型 属性 检索到的列表中生成 table 个项目,如下所示:
@page
@model Agency.Pages.TypeManagement.CategoryType.IndexModel
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<p>
<a asp-page="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Category[0].CategoryCode)
</th>
<th>
@Html.DisplayNameFor(model => model.Category[0].CategoryName)
</th>
<th>
@Html.DisplayNameFor(model => model.Category[0].CategoryDescription)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Category) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CategoryCode)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryDescription)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@item.CategoryId">Edit</a> |
<a asp-page="./Details" asp-route-id="@item.CategoryId">Details</a> |
<a asp-page="./Delete" asp-route-id="@item.CategoryId">Delete</a>
</td>
</tr>
}
</tbody>
</table>
我想做的是在table中的每一项输出一个sub-table,如果sub-table中存在任何item,则根据ID母版中的项目 table。我知道我可以在 Razor 语句中使用 属性,如 Model.Category,但是否也可以根据当前项的 ID 等值从视图中检索数据?
所以我想要结束的是这样的:
@foreach (var item in Model.Category) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CategoryCode)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryDescription)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@item.CategoryId">Edit</a> |
<a asp-page="./Details" asp-route-id="@item.CategoryId">Details</a> |
<a asp-page="./Delete" asp-route-id="@item.CategoryId">Delete</a>
</td>
<table>
<tbody>
@foreach (var subitem in Model.SubCategory) {
<tr>
<td>
@Html.DisplayFor(modelItem => subitem.CategoryCode)
</td>
<td>
@Html.DisplayFor(modelItem => subitem.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => subitem.CategoryDescription)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@subitem.CategoryId">Edit</a> |
<a asp-page="./Details" asp-route-id="@subitem.CategoryId">Details</a> |
<a asp-page="./Delete" asp-route-id="@subitem.CategoryId">Delete</a>
</td>
</tr>
}
</tbody
</table
</tr>
}
但我需要根据当前主行中项目的 ID 过滤 SubCategory 项目 table。
根据当前 item/row 的标识符过滤子类别。
@foreach (var item in Model.Category) {
//...omitted for brevity
var subItems = Model.SubCategory.Where(x => x.CategoryId = item.Id);
if(subItems.Any()) {
<table>
<tbody>
foreach (var subitem in subItems) {
//...omitted for brevity
其中 item
来自外部 foreach
循环。
引用Using the Razor Syntax: Combining Text, Markup, and Code in Code Blocks