Asp.net mvc ASP MVC 4每个控制器的默认操作

Asp.net mvc ASP MVC 4每个控制器的默认操作,asp.net-mvc,asp.net-mvc-4,routing,http-status-code-404,Asp.net Mvc,Asp.net Mvc 4,Routing,Http Status Code 404,我想将用户重定向到每个控制器的默认操作 假设我有:控制器1,控制器2,。。。 每个都有几个有效的操作:操作1,操作2,。。。。 因此,有效的URL如下所示: 域/控制器1/ 域/控制器1/action1/ 域/controller1/action2/ 域/控制器2/action1/ 等等 现在,如果我键入:domain/controller1/{anystring}我会得到404错误。 每当用户键入domain/controller1/{any string}或甚至键入domain/contro

我想将用户重定向到每个控制器的默认操作

假设我有:控制器1,控制器2,。。。 每个都有几个有效的操作:操作1,操作2,。。。。 因此,有效的URL如下所示:

域/控制器1/

域/控制器1/action1/

域/controller1/action2/

域/控制器2/action1/

等等

现在,如果我键入:domain/controller1/{anystring}我会得到404错误。 每当用户键入domain/controller1/{any string}或甚至键入domain/controller1/{string1}/{string2}时,我想将用户重定向到domain/controller1/action1。。。。
并在其他情况下保留404错误(当控制器不匹配时)。

我相信在您的路由配置文件下,您添加了一个新路由,如下所示

routes.MapRoute(
        name: "Default",
        url: "controller1/{action}/",
        defaults: new {  action = "Index" }
    );

如果语法错误,很抱歉。

您正在查看的地图路线有点棘手。如果我们采用简单的映射路径“domain/controller1/{any string}”,这可以很容易地映射到任何url,包括有效的操作(anystring可以是action2,对吗?)。因此,为了让映射选择正确的操作,您必须为每个有效的操作创建一个特定的映射路由,并添加一个通用映射路由,将所有其他URL重定向到“action1”,如下面的代码所示

            routes.MapRoute(name: "map1", url: "controller1/action1", defaults: new
            {
                action = "action1",
                controller = "controller1"
            });

            routes.MapRoute(name: "map2", url: "controller1/action2", defaults: new
            {
                action = "action2",
                controller = "controller1"
            });

            routes.MapRoute(name: "map3", url: "controller1/{anystring}", defaults: new
            {
                action = "action1",
                controller = "controller1",
                anystring = UrlParameter.Optional
            });
这是我能想到的最好的方法