【问题标题】:With ASP.NET Core 3.1, how can I strip the Home controller from a page URL?使用 ASP.NET Core 3.1,如何从页面 URL 中剥离 Home 控制器?
【发布时间】:2020-10-18 08:53:55
【问题描述】:

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

而不是呈现这个 URL ...

www.mysite.com/Home/About

...我想看看这个:

www.mysite.com/About

目前,我正在使用 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" }
);

我希望在这个新的 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?}");
});

为了从 HomeController 所针对的视图中剥离“/Home/”路径,我需要应用什么端点模式?

感谢您的帮助!

【问题讨论】:

    标签: c# asp.net-core asp.net-mvc-routing


    【解决方案1】:
    //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" });
    

    【讨论】:

    • 太棒了!谢谢你,布鲁斯!
    猜你喜欢
    • 2021-06-26
    • 2021-12-25
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多