Razor Pages 中 @page 指令中的强类型路由

Oct*_*pus 15 asp.net-core razor-pages

在 ASP.NET Core Razor 页面上,我们可以执行以下操作来更改默认的基于文件夹的路由:

@page "/xxx/yyy"
Run Code Online (Sandbox Code Playgroud)

但尝试在某些类中使用强类型属性来执行此操作Constants.Routes是行不通的

public const string Myroute = "/mysuperroute"; 
Run Code Online (Sandbox Code Playgroud)

@page @Constants.Routes.Myroute
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到错误The 'page' directive expects a string surrounded by double quotes.

有没有解决的办法?我想避免通过选项重复路由,例如https://learn.microsoft.com/en-us/aspnet/core/razor-pages/razor-pages-conventions?view=aspnetcore-2.2#configure-a-page -路线 谢谢

Rad*_*all 11

聚会有点晚了,但我遇到了同样的问题,并找到了将组件与给定路由模板关联起来的RouteAttribute 。

因此,您可以在 razor 组件中执行以下操作,并使其在 {host}:{port}/test 下可用:

@attribute [Microsoft.AspNetCore.Components.RouteAttribute(Href)]


@code {
  public const string Href = "test";
}
Run Code Online (Sandbox Code Playgroud)

在 NavLink 中,您现在可以执行以下操作:

<NavLink class="nav-link" href="@TestComponent.Href">
    Test Entry
</NavLink>
Run Code Online (Sandbox Code Playgroud)

来源