如何解决带参数的属性路由-附加路由ID值的锚标签帮助程序
我已经在Startup.cs中设置了“基本”路由,没有任何异常(一个用于标准路由,另一个用于区域)。它们在下面:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "Areas",pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
现在,有了这两个功能,我就可以导航(尽管手动)到我想要的路线。以下是我在操作中拥有的属性路线:
[Route("Admin/Artists/{artistId:int}/Albums")]
public async Task<IActionResult> Albums(int artistId)
{
var albums = await Mediatr.Send(new GetAlbumsForArtistRequest { ArtistId = artistId });
return View(albums);
}
我可以成功浏览到该路线(尽管手动),然后出现我的视图。然后,我尝试使用锚标记帮助程序:
<a asp-area="Admin" asp-controller="Artists" asp-action="Albums" asp-route-artist-id="@ViewData["ArtistId"]" class="btn btn-info">Albums</a>
生成的URL不正确(并且由于未定义此路由而引发异常):
/Admin/Artists/Albums
正确的网址应为:
/Admin/Artists/558/Albums
我尝试在Anchor Tag Helper documentation上寻求任何帮助,但这没有帮助。
解决方法
正确的URL应该是:
/Admin/Artists/558/Albums
在您的代码中,我们发现您为锚标签助手指定了asp-route-artist-id="@ViewData["ArtistId"]"
,这会导致问题。
请删除-
和artist
之间的id
,它应该是asp-route-artistid
。
测试结果
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。