我在控制器上有很多动作
Controller1\Action1
Controller1\Action2
Controller1\Action3
Controller1\Action4
Controller1\Action5
Controller1\Action6
我希望我的网址永远只是:
Action1
Action2
Action3
Action4
Action5
Action6
有一种简单的方法吗?我不会在以下地方发生任何冲突:
Controller1\Action1
Controller2\Action1
每个动作都有一个唯一的名称。
答案 0 :(得分:2)
你应该可以这样做:
routes.MapRoute(
"CatchAll",
"{action}/{*path}",
new { controller = "MyController", action = "Index" }
);
基本上你告诉它所有请求都应该将路径视为Action,它们都应该转到“MyController”。如果Url中未提供Action,则action =“Index”将作为默认值。
即使在操作名称后附加了额外的无效路径数据,上述路径定义也会评估为true。这意味着/Action1
和/Action1/251958125ad/2512qsadfa2
都会转到Action1()
。如果您希望只允许确切的路径:
routes.MapRoute(
"CatchAll",
"{action}",
new { controller = "MyController", action = "Index" }
);