ASP.Net Core 2.1 中关于 Razor 页面的自定义路由

Custom Route to About Razor Page in ASP.Net Core 2.1

我想将 .Net Core 2.1 脚手架的基本项目中的关于页面移动到名为 Public (/Public/About.cshtml) 的目录下的某个位置,但仍由脚手架菜单项 - 即

<a asp-page="/About">About</a>

我该怎么做?

关于 页面移动到新的子文件夹后 Pages/Public 仍然想保留“/关于”作为该页面的 URL,您可以修改该页面的路由,这是要做的:

<a asp-page="/About">About</a>更改为<a asp-page="/Public/About">About</a>

asp-page 标签助手需要一个指向您的剃刀页面文件的路径,而不是 URL。它将根据您添加的约定或自定义路由生成最终的 URL。

在您的 ConfigureServices 方法中,您需要配置 /Public/About razor 页面应该使用 /About 作为路由,而不是 /Public/About 如果你不配置它,这将是默认值。所以你必须在你的方法中有这个:

services.AddMvc()
    .AddRazorPagesOptions(
        options => options.Conventions.AddPageRoute("/Public/About", "/About")
    );

AddPageRoute方法的第一个参数是razor页面的路径,第二个参数是新路由。因此,如果您执行应用程序并单击 About link,您会发现 /About 将精确指向 /Public/About。浏览器也不包含 /Public/.

如果您想了解有关 Razor Pages 自定义路由的更多信息,请查看 official documentation