使用 ASP.NET MVC 从 URL 中删除主目录

Remove home directory from the URL with ASP.NET MVC

情况

我将构建我的 URL 如下所示:

  1. / 上的概览页面(在 HomeController)。
  2. /details/123 而不是 /home/details/123 上的详细信息页面知道 123 始终是一个数字(在 HomeController)。
  3. /info 上的信息页面,而不是 /home/info(位于 HomeController)。
  4. /account/signin 上的登录页面(位于 AccountController)。

我的申请没有更多页面了。

尝试 1

我创建了如下两条路线:

routes.MapRoute(
    name: "Home",
    url: "{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

问题是帐户页面给出了 404。其他页面正常。

尝试 2

我创建了一条如下所示的路线:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

HomeController 中的每个方法上添加了具有正确 URL.

Route 属性

现在的问题是概览和登录页面可以正常工作,但其他人现在给出了 404。

问题

如何使用 ASP.NET MVC 从 URL 中删除主目录?

要使用属性路由,您需要添加

routes.MapMvcAttributeRoutes();

到您的 RouteConfig.cs 文件。

它应该在您的默认路线之前。