使用 ASP.NET Core 3.1,如何从页面 URL 中剥离 Home 控制器?

Ken*_*mer 2 c# asp.net-mvc-routing asp.net-core

如何从 ASP.NET MVC Core 3.1 Web 应用程序中的页面 URL 中删除“Home”控制器路径?

而不是渲染这个 URL ...

www.mysite.com/Home/About
Run Code Online (Sandbox Code Playgroud)

...我想看到这个:

www.mysite.com/About
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用 ASP.NET Core 3.1 将旧的 MVC .NET Web 应用程序从 Visual Studio 2013 (.NET Framework 4.7.2) 迁移到 Visual Studio Code。我之前的应用程序注册了这个路由,从而产生了如上所示的效果。

routes.MapRoute(
    name: "RemoveHomeFromURL",
    url: "{action}",
    defaults: new { controller = "Home", action = "Index" },
    namespaces: new[] { "MyWebsite.Controllers" }
);
Run Code Online (Sandbox Code Playgroud)

我希望在这个新的 ASP.NET Core Web 应用程序中获得类似的结果。我在 Startup.cs 中定义了这些端点:

app.UseEndpoints(endpoints =>
{
  endpoints.MapAreaControllerRoute(
    name: "AreaA",
    areaName: "AreaA",
    pattern: "AreaA/{controller=Home}/{action=Index}/{id?}");
  endpoints.MapAreaControllerRoute(
    name: "AreaZ",
    areaName: "AreaZ",
    pattern: "AreaZ/{controller=Home}/{action=Index}/{id?}");
  endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)

我需要应用什么端点模式才能从 HomeController 的目标视图中剥离“/Home/”路径?

感谢您的帮助!

Bru*_*ams 5

//Actions only for Home controller (domain.com/about instead of domain.com/home/about)
endpoints.MapControllerRoute(
      name: "HomeActionOnly", 
      pattern: "{action}", 
      defaults: new { controller = "Home", action = "Index" });
Run Code Online (Sandbox Code Playgroud)