【问题标题】:In .net core razor pages- how do you navigate from parent record page to a child record page?在 .net 核心剃须刀页面中 - 如何从父记录页面导航到子记录页面?
【发布时间】:2021-04-09 04:21:48
【问题描述】:

我有一个 .net 核心 Razor 页面应用程序,其中我有父子关系。

父是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>
}

靠近底部的是这条线

                            <a asp-page="/PositionDetail/Index" asp-route-id="@item.PositionId">Position Details</a> |

我要做的是从 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();
        }
    }
}

但是当我在上面的 cshtml 代码中编译并尝试使用上面的链接进行导航时,它没有找到该页面,当我在浏览器中查看执行 F12 的结果时,它给我一个 404 not found 错误。

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

感谢您的任何建议。我怀疑它显然是一个路由问题......

【问题讨论】:

  • 如果这不能解决您的问题,您可以提供有关此问题的更多详细信息。
  • 由于某种原因,该页面不允许我对您上面的答案发表评论。上面回答银秋:刚才查了一下。是的 - 这有效!如果我理解正确,则需要 ../PositionDetail/Index 中的额外句点使其看起来超出现有页面的现有文件夹。我猜每个额外的时期都会在层次结构中再增加一个文件夹谢谢
  • 如何标记为答案?
  • 你可以看到here。谢谢!

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


【解决方案1】:

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

<a asp-page="../PositionDetail/Index" asp-route-id="@item.PositionId">Position Details</a> |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2022-06-20
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多