我是 ASP.NET 和 Razor Pages 的新手。我有一个网络应用程序,我想在其中显示带有 html 扩展名的 URL。因此,
localhost/login.html
应该转到 Pages/Login.cshtml
。我读过有关 AddRazorPages
和 AddRazorPagesOptions()
的内容,但我所能理解的就是默认情况下 Razor Pages 将 localhost/
路由到 Pages/index.cshtml
和 localhost/product/create
到 Pages/Product/Create.cshtml
等等。如何拦截这个超出了我的范围,无论我读到什么,都超出了我的想象。
我试过了,但没有成功:
(Program.cs)
builder.Services.AddRazorPages().AddRazorPagesOptions(opt =>
{
opt.Conventions.AddPageRoute("/*.html", "/*");
});
任何人都可以帮助我(几乎没有解释)如何实现这一目标吗?或者给我指点资源。谢谢!
IPageRouteModelConvention 接口 允许自定义 PageRouteModel。
PageConventionCollection.AddFolderRouteModelConvention 方法创建并添加 IPageRouteModelConvention,该 IPageRouteModelConvention 对指定文件夹下的所有页面的 PageRouteModel 实例调用操作。
所以如果我们想显示带有html扩展名的URL,我们需要自定义 PageRouteModel ,尝试以下代码:
builder.Services.AddRazorPages().AddRazorPagesOptions(o =>
{
o.Conventions.AddFolderRouteModelConvention("/", pageRouteModel =>
{
foreach (var selectorModel in pageRouteModel.Selectors)
selectorModel.AttributeRouteModel.Template = selectorModel.AttributeRouteModel.Template + ".html";
});
});
结果:localhost/Privacy.html 应转到 Pages/Privacy.cshtml: