从一个索引页面传递所选项目以制作另一个索引页面的标题

Pass Selected Item From One Index Page To Make Title of Another Index Page

早上好mega-minds!我有一个正在使用 Razor Pages 在 ASP.Net Core 中创建的项目,该项目将跟踪我们的 IT 部门对我们的 Epicor ERP 系统所做的开发项目。我有一个索引页面列出了 Table 个名称,另一个列出了与第一个索引页面中选定名称相关的数据。我想要做的是让第二个索引页面的页面标题成为从第一个索引页面中选择的名称。请参阅下面的图片以显示我正在努力完成的任务...

UD Tables

UD Table Data

这是第一个索引页的代码...

@page
@model EpicorDevInfo.Pages.UDTables.IndexModel

@{
    ViewData["Title"] = "UD Tables";
}

<h1>UD Tables</h1>

<p>
    <a asp-page="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.UDTable[0].TableName)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.UDTable.OrderBy(r => r.TableName))
        {
            <tr>
                <td>
                    <a asp-page="./Data/Index" asp-route-tblID="@item.ID" asp-route-tblName="@item.TableName">
                            @Html.DisplayFor(modelItem => item.TableName)
                    </a>
                </td>
                <td>
                    <a asp-page="./Edit" asp-route-id="@item.ID">Edit</a> |
                    <a asp-page="./Details" asp-route-id="@item.ID">Details</a> |
                    <a asp-page="./Delete" asp-route-id="@item.ID">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>

这是第二个的代码...

@page
@model EpicorDevInfo.Pages.UDTables.Data.IndexModel

@{
    ViewData["Title"] = "Index";
}

<h1>This need to change to show the previous Index page item that was clicked on!</h1>

<p>
    <a asp-page="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.UDTableData[0].TableID)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.UDTableData[0].ColumnLabel)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.UDTableData[0].DatabaseColumn)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.UDTableData)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.TableID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.ColumnLabel)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.DatabaseColumn)
                </td>
                <td>
                    <a asp-page="./Edit" asp-route-id="@item.ID">Edit</a> |
                    <a asp-page="./Details" asp-route-id="@item.ID">Details</a> |
                    <a asp-page="./Delete" asp-route-id="@item.ID">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>

基本上我要做的是从第一页传递这个...

<td>
     <a asp-page="./Data/Index" asp-route-tblID="@item.ID" asp-route-tblName="@item.TableName">
         @Html.DisplayFor(modelItem => item.TableName)
     </a>
</td>

第2页的这个...

<h1>This need to change to show the previous Index page item that was clicked on!</h1>

我查看了如何使用 ViewData 和 ViewBag,但没有显示如何将用户选择的内容分配给其中任何一个。任何帮助将不胜感激。感谢您的宝贵时间,祝您度过愉快的一天!

您必须更改第二页的视图和隐藏代码

查看

@page"{id}/{tblname}"
@model EpicorDevInfo.Pages.UDTables.Data.IndexModel

和代码隐藏

public void OnGet(int id, string tblname)