如何使用自定义路由模式访问 url?

How to access url with custom route pattern?

我已经将模式设置为:

endpoints.MapControllerRoute(
            //name: "default",
            //pattern: "{controller=Home}/{action=Index}/{id?}");
            name: "custom",
            pattern: "{company?}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();

当我像 https://localhost:44387/123/Users 一样访问 url 浏览器时,页面将成功显示并且值 123 在控制器中成功检索:

public IActionResult Index(string company)
{
    //code here
}

我如何通过剃须刀访问它?在我更新模式之前,我只使用默认的代码

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="123/Users" asp-action="Index">User</a>
</li>
<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="Clients" asp-action="Index">Client</a>
</li>

我尝试将 123 附加到 asp-controller 但它不起作用。 我在这里错过了什么? 谢谢!

您可以使用:

<li class="nav-item">
    <a class="nav-link text-dark" href="3\Users\Index">User</a> 
</li>

或者使用HTML辅助方法:

<li class="nav-item">
    @Html.ActionLink("Users", "Index", "Users", routeValues: new { company = "123" }, htmlAttributes: new { @class= "nav-link text-dark" })
</li>

有关详细信息,请参阅 HtmlHelperLinkExtensions.ActionLink Method