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。
我想将 .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。