隐藏来自 URL 的控制器名称

Hiding controller name from URL

此问题与 ASP.Net Core 的最新稳定版有关。

就像我之前在 Whosebug 上浏览过的问题一样,我想要完成的是,当访问 Home Views 文件夹中 Index 以外的任何其他视图时,对于例如,访问 About,URL 阅读:

www.example.com/About

而不是:www.example.com/Home/About

我的代码:

在新启动的ASP.Net Core App中,在Startup.cs文件中,有一个Configure函数:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

我尝试过的事情:

我尝试将路线更改为:

routes.MapRoute(
    "Home",
    "",
    new { action = Index, controller = Home }
);

没用。我也试过插入这个:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    "OnlyAction",
    "{action}",
    new { controller = "Home", action = "Index" } 
);

但不幸的是,ASP.Net 还不能识别 IgnoreRoute 函数。

还有其他人 运行 使用 Core 吗?任何帮助将不胜感激。

根据 Asp.Net 核心 Routing 文档

类似下面的内容应该符合您的描述

routes.MapRoute(
    name: "root",
    template: "{action}/{id?}",
    defaults: new { controller = "Home", action = "Index" });