如何解决具有动态参数的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”
但是,一旦我单击第一个链接并导航到相应的页面,所有的导航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 举报,一经查实,本站将立刻删除。