微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有动态参数的Razor Pages标签帮助程序,将当前网址分配为Href

如何解决具有动态参数的Razor Pages标签帮助程序,将当前网址分配为Href

尝试动态设置锚标记帮助程序参数并寻求帮助时遇到麻烦。

我有一个导航,它是共享的_Layout.cshtml页面中的视图组件,该页面用于填充模型中的部门。

@model List<DepartmentModel>
<ul class="nav">
    @foreach (var d in Model)
    {
        <li>
            <a asp-page="catalog/departments" asp-route-departmentName="@d.Name" asp-route-departmentId="@d.Id">@d.Name</a>
        </li>
    }
</ul>

这是我的View Component类中的InvokeAsync()

    public async Task<IViewComponentResult> InvokeAsync()
    {
        var departments = _catalogService.GetNavDepartments();

        return View(departments);
    }

当我第一次启动页面时,所有的href都正确填充。

  • “目录/部门/部门名称-1 /部门ID-1”

  • “目录/部门/部门名称2 /部门ID-2”

  • “目录/部门/部门名称3 /部门ID-3”

如果单击其中一个链接(例如第一个链接),则转到相应的部门页面“目录/部门/部门名称-1 /部门ID-1”

但是,一旦我单击第一个链接并导航到相应的页面,所有的导航href就会填充到当前网址“ catalog / departments / department-name-1 / department-id-1”,而不是最初生成的href 。这样可以使我无法导航到其他部门。

这是我在Startup.cs中的路线

 services.AddRazorPages().AddRazorPagesOptions(options => {
                             
  options.Conventions.AddPageRoute("/Catalog/Departments","{dName}/{dId}");

 });

基于上述约定,它消除了url的“目录/部门”部分,但出于说明目的,我在本说明中添加了它。即使我将此模板添加到填充“目录/部门” URL的页面中,我也会得到相同的结果。

@page  "{dName}/{dId}"

有人可以帮助我弄清楚我所缺少的吗?预先感谢!

********更新********

当前,我能够使它起作用的唯一方法添加缓存标签帮助程序。

 <cache>
    <ul class="nav">
        @foreach (var d in Model)
        {
            <li>
                <a asp-page="catalog/departments" asp-route-departmentName="@d.Name" asp-route-departmentId="@d.Id">@d.Name</a>
            </li>
        }
    </ul>
 </cache>

这似乎不是正确的解决方法。似乎更多的是hack,然后是其他任何东西。有人有什么想法吗?谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。