【问题标题】:Pass Selected Item From One Index Page To Make Title of Another Index Page从一个索引页面传递所选项目以制作另一个索引页面的标题
【发布时间】:2021-08-19 20:03:34
【问题描述】:

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

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,但没有显示如何将用户选择的内容分配给其中任何一个。任何帮助将不胜感激。感谢您的宝贵时间,祝您有美好的一天!

【问题讨论】:

  • 能否显示第二页的代码

标签: c# asp.net-core .net-core parameter-passing razor-pages


【解决方案1】:

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

查看

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

和后面的代码

public void OnGet(int id, string tblname)

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 2018-04-27
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多