如何将.html添加到razor页面url?

问题描述 投票:0回答:1

我是 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", "/*");
});

任何人都可以帮助我(几乎没有解释)如何实现这一目标吗?或者给我指点资源。谢谢!

razor-pages asp.net-core-8
1个回答
0
投票

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:

© www.soinside.com 2019 - 2024. All rights reserved.