开发者

Any way to create a catch all Route

开发者 https://www.devze.com 2022-12-12 04:04 出处:网络
I have many actions on a controller Controller1\\Action1 Controller1\\Action2 Controll开发者_StackOverflower1\\Action3

I have many actions on a controller

Controller1\Action1
Controller1\Action2
Controll开发者_StackOverflower1\Action3
Controller1\Action4
Controller1\Action5
Controller1\Action6

I would like my URLs to always be just:

Action1
Action2
Action3
Action4
Action5
Action6

Is there an easy way to do this? I won't have any conflicts where:

Controller1\Action1
Controller2\Action1

Every action will have a unique name.


You should be able to do something like this:

routes.MapRoute(
    "CatchAll",
    "{action}/{*path}",
    new { controller = "MyController", action = "Index" }
);

Essentially you're telling it all requests should treat the path as the Action and they should all go to "MyController". The action = "Index" acts as a default in the event that an Action is not provided in the Url.

The above route definition will evaluate to true even if extra, invalid path data is appended after the action name. What that means is that both /Action1 and /Action1/251958125ad/2512qsadfa2 will go to Action1(). If you would prefer that only the exact path be allowed:

routes.MapRoute(
    "CatchAll",
    "{action}",
    new { controller = "MyController", action = "Index" }
);
0

精彩评论

暂无评论...
验证码 换一张
取 消