Razor Page页眉中的リンク会保留来自下拉列表的id路由参数值
我正在做Contoso U教程:
https://learn.microsoft.com/en-us/aspnet/core/data/ef-rp/read-related-data?view=aspnetcore-10.0&tabs=visual-studio
在布局文件中,指向Instructors页面的链接是:
<li class="nav-item">
<a class="nav-link text-dark"
asp-area=""
asp-page="/Instructors/Index">Instructors</a>
</li>
因此该链接渲染的URL是:
https://localhost:7283/Instructors.
在Pages/Instructors/Instructors.cshtml中,可以通过名为Select的链接来选择讲师:
<a asp-page="./Index" asp-route-id="@item.ID">Select</a>
渲染出的链接看起来是: https://localhost:7283/Instructors/1
现在,当我再次点开Instructors链接时,我本来希望id能清空,回到未选中任何讲师的讲师列表。但id并没有被清空,似乎又被带回去了。这是怎么回事?
我以前从未见过这种情况。
显然,由于布局文件中的页眉链接被嵌入到页面中,它保持着instructorId并把它作为回传值发送回去。
显然微软把这些称为“环境值”。
在我看来,这似乎是一个设计缺陷。
关于这里的最佳实践,大家有什么想法?
我能想到的唯一做法是使用一个实际的锚点标签,而不是标签助手。
解决方案
是的,这是ASP.Net最让人恼火的特性之一。要取消环境值,请对TagHelper属性使用一个空值:
<a asp-area="" asp-page="/Instructors/Index" asp-route-id="">Instructors</a>
请注意,它必须是 ""。
你可以通过指定一个有效值来覆盖环境值,或者通过使用 "" 将其清除,或者通过指定 其他任何内容,例如 asp-route-id="null" 或 asp-route-id="foo" 来继续使用它。这些值无效,因此恼人地仍然会使用环境值。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。