首页 > 解决方案 > Can't generate proper anchor link in .net core 3.0

问题描述

I am trying to create a link like https://localhost:44332/training/course/1/buy. Below is my code to generate it:

.cshtml:

<a asp-controller="training"
                   asp-action="course"
                   asp-route-id="1"
                   asp-route-type="buy">Buy now</a>

Startup.cs:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "Buy",
        pattern: "{controller=Home}/{action=Index}/{id?}/{type=buy}");

    endpoints.MapRazorPages();
});

But it generates link like https://localhost:44332/training/course/1?type=buy

Can anyone tell me, where I made the mistake? How to generate my expected link?

标签: asp.net-core-mvcasp.net-core-3.0

解决方案


您需要将自定义路由映射放在默认路由映射之前,然后用其他词替换buyin或仅使用{type=buy}{type=test}{type}

最终代码:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "Buy",
        pattern: "{controller=Home}/{action=Index}/{id?}/{type=test}");
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

推荐阅读