我想将用户重定向到每个控制器的默认操作。
假设我有: Controller1 , Controller2 ,... 每个都有一些有效的操作: Action1 , Action2 ,.... 所以有效的URL看起来像这样:
域/控制器1 /
域/控制器1 /动作1 /
域/控制器1/1动作/
域/控制器2 /动作1 /
等等。
现在,如果我输入: domain / controller1 / {any string} ,我会收到404错误。 我想将用户重定向到 domain / controller1 / action1 ,只要他们输入 domain / controller1 / {any string} 甚至 domain / controller1 / {string1} / {string2} .... 并且在其他情况下(当控制器不匹配时)保持404错误。
答案 0 :(得分:2)
我相信在您的路线配置文件下,您可以添加一条新路线。
routes.MapRoute(
name: "Default",
url: "controller1/{action}/",
defaults: new { action = "Index" }
);
很抱歉,如果语法错误。
答案 1 :(得分:0)
您正在查看的地图路线有点棘手。如果我们采用简单的映射路由“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
});
这是我能想到的最佳方式......