Asp.net mvc 如何使以/home开头的路由始终直接指向home控制器和索引操作?

Asp.net mvc 如何使以/home开头的路由始终直接指向home控制器和索引操作?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有以下路线: routes.MapRoute( name: "Default", url: "home/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 这可以很好地工作,并引导用户进入/home的主控制器索引操作 如果用户输入以下内容,是否有一种方法可以使其直接指向索引操作: /主页/xxx或 /首页/xxx/x

我有以下路线:

routes.MapRoute(
    name: "Default",
    url: "home/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这可以很好地工作,并引导用户进入/home的主控制器索引操作

如果用户输入以下内容,是否有一种方法可以使其直接指向索引操作:

/主页/xxx或 /首页/xxx/xxx


其中xxx可以是任何东西?

当然,只需从路由定义中删除
{action}
部分,以便操作始终是
索引

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

当然,只需从路由定义中删除
{action}
部分,以便操作始终是
索引

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

如果从url中删除{action}并将其保留为默认值,那么它应该可以正常工作

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

在这种情况下,操作将始终是索引…

如果从url中删除{action}并将其保留为默认值,那么它应该可以正常工作

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

在这种情况下,操作将始终是索引…

尝试以下方法以捕获所有可能的路线:

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

尝试以下方法以捕捉所有可能的路线:

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

这也会捕获/home/x/x/x吗?应该,但您最好对其进行双重测试。我现在还不知道这是否也可以捕获/home/x/x/x?应该可以,但你最好再测试一次。目前我还不知道这对/home/xx和/home/xx/xx的两个组合有效吗?是的,有效。
{id}
路由令牌在此路由中是可选的。对于/home/xx和/home/xx/xx的两种组合,这是否有效?是的,它将有效。
{id}
路由令牌在此路由中是可选的。