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

时间:2019-04-10 14:01:00

标签: asp.net-mvc routing

情况

我将按照以下步骤构建我的网址:

  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中删除主目录?

1 个答案:

答案 0 :(得分:2)

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

routes.MapMvcAttributeRoutes();

到您的RouteConfig.cs文件。

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