如何根据 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