C# 在.net core razor页面中-如何从父记录页面导航到子记录页面?

C# 在.net core razor页面中-如何从父记录页面导航到子记录页面?,c#,asp.net-core,.net-core,razor,razor-pages,C#,Asp.net Core,.net Core,Razor,Razor Pages,我有一个.NETCoreRazorPages应用程序,其中我有一个父子关系 父项为PositionSummary,子项为PositionDetail PosSumList.cshtml页面是一个网格/表格页面,类似于标准索引页面,具有以下代码: @page @model ThePositionerRazor2.Pages.PositionSummary.PosSumListModel @{ ViewData["Title"] = "PosSumLi

我有一个.NETCoreRazorPages应用程序,其中我有一个父子关系

父项为PositionSummary,子项为PositionDetail

PosSumList.cshtml页面是一个网格/表格页面,类似于标准索引页面,具有以下代码:

    @page
@model ThePositionerRazor2.Pages.PositionSummary.PosSumListModel
@{
    ViewData["Title"] = "PosSumList";
}

<h1>Position Summary Information</h1>

<p>
    <a asp-page="Create">Create New</a>
</p>

<div class="row">
    <div class="col-md-12">
        <div class="panel panel-primary list-panel" id="list-panel">
            <div class="panel-heading list-panel-heading">
                <h1 class="panel-title list-panel-title">Position Summary</h1>
            </div>
            <div class="panel-body">
                <table id="Possumlist-data-table"
                       class="table table-striped table-bordered"
                       style="width:100%">
                    <thead>
                        <tr>
                            <th>
                                @Html.DisplayNameFor(model => model.Possummary[0].PositionNbr)
                            </th>
                            <th>
                                @Html.DisplayNameFor(model => model.Possummary[0].WorkTitle)
                            </th>
                            <th>
                                @Html.DisplayNameFor(model => model.Possummary[0].Purpose)
                            </th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach (var item in Model.Possummary)
                        {
                            <tr>
                                <td>
                                    @Html.DisplayFor(modelItem => item.PositionNbr)
                                </td>
                                <td>
                                    @Html.DisplayFor(modelItem => item.WorkTitle)
                                </td>
                                <td>
                                    @Html.DisplayFor(modelItem => item.Purpose)
                                </td>
                                <td>
                                    <a asp-page="./Edit" asp-route-id="@item.PositionId">Edit</a> |
                                    <a asp-page="/PositionDetail/Index" asp-route-id="@item.PositionId">Position Details</a> |
                                </td>
                            </tr>
                        }
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>
@section Scripts
    {
    <link href="https://cdn.datatables.net/1.10.15/css/dataTables.bootstrap.min.css" rel="stylesheet" />
    <script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.15/js/dataTables.bootstrap4.min.js "></script>

    <script type="text/javascript">
        $(document).ready(function () {

            $('#Possumlist-data-table').DataTable({ "order": [[0, "asc"]] });

        });
    </script>
}
@page
@为PositionErrazor2.Pages.PositionSummary.PosSumListModel建模
@{
ViewData[“Title”]=“PosSumList”;
}
职位摘要信息

|
我试图做的是从Pages文件夹(PositionSummary)中的一个文件夹导航到Pages文件夹(PositionDetail/Index)中另一个文件夹中的索引页

当我到达那里时,我希望索引页只显示与从PositionSummary中选择的父记录相关的子记录

我预计这将要求我在PositionDetail索引页面的OnGetAsync任务中使用一个参数:

namespace ThePositionerRazor2.Pages.PositionDetail
{
    public class IndexModel : PageModel
    {
        private readonly ThePositionerRazor2.Models.WorkManagerV4Context _context;

        public IndexModel(ThePositionerRazor2.Models.WorkManagerV4Context context)
        {
            _context = context;
        }

        public IList<Posdetail> Posdetail { get;set; }

        public async Task OnGetAsync()
        {
            Posdetail = await _context.Posdetail
                .Include(p => p.Importance)
                .Include(p => p.KnowdepthNavigation)
                .Include(p => p.Position)
                .Include(p => p.TimeSpentNavigation)
                .Include(p => p.WorkitemNavigation).ToListAsync();
        }
    }
}
名称空间PositionErrazor2.Pages.PositionDetail
{
公共类索引模型:PageModel
{
private只读PositionErrazor2.Models.WorkManagerV4上下文\u上下文;
公共索引模型(PositionErrazor2.Models.WorkManagerV4上下文)
{
_上下文=上下文;
}
公共IList Posdetail{get;set;}
公共异步任务OnGetAsync()
{
Posdetail=wait_context.Posdetail
.包括(p=>p.重要性)
.Include(p=>p.KnowdepthNavigation)
.包括(p=>p.位置)
.Include(p=>p.timespuntNavigation)
.Include(p=>p.WorkitemNavigation).toListSync();
}
}
}
但是,当我在上面的cshtml代码中编译并尝试使用上面的链接导航时,它找不到该页面,当我在浏览器中执行F12时,会看到404 not found错误

如何在.net core Razor页面中从一个文件夹和页面导航到另一个文件夹和页面?PositionSummary和PositionDetail文件夹都只是标准Razor页面应用程序-“页面”文件夹中的文件夹


谢谢你的建议。我怀疑这显然是一个路由问题…

您可以像下面这样更改代码

<a asp-page="../PositionDetail/Index" asp-route-id="@item.PositionId">Position Details</a> |
职位详细信息|

如果这不能解决您的问题,您可以提供有关此问题的更多详细信息。由于某些原因,该页面不允许我对您的上述答案发表评论。上面的回答殷秋:刚才查过了。是的,成功了!如果我理解正确,../PositionDetail/Index中需要额外的句点,以使其超出现有页面的现有文件夹。我猜每增加一个句点,就会在层次结构上再增加一个文件夹。谢谢。我标记为答案吗?你可以看到。谢谢!
<a asp-page="../PositionDetail/Index" asp-route-id="@item.PositionId">Position Details</a> |