2016-11-22 3 views
2

Можно ли поймать все подпапки под контроллером?Поймать все «подпуты», прибегая к определенному контроллеру

Под FooController и BarController Я хотел бы перенаправить все ссылки, которые не имеют соответствующий метод в его контроллер для Redirect метода:

www.domain.com/Foo/WhatEver - call Foo.Redirect() 
www.domain.com/Foo/WhatEver2 - call Foo.Redirect() 
www.domain.com/Bar/WhatEver - call Bar.Redirect() 
www.domain.com/Bar/WhatEver2 - call Bar.Redirect() 

Я знаю, что это возможно, чтобы поймать его на 404, как описано here но я хотел бы поймать их на уровне контроллера.

Возможно ли это, и если да, то каким образом?

ответ

2

В App_Start.RouteConfig я прибавил:

routes.MapRoute(
       "Foo", 
       "Foo/{*arg}", 
       new { controller = "Foo", action = "Redirect", arg = "" } 
      ); 

Это перенаправляет все вложенные контуры с MP2 в нем т.е .:

www.domain.com/Foo/ 
www.domain.com/Foo/SubPath/ 
www.domain.com/Foo/SubPath/AnotherSubPath/ 

Он также включает в себя индекс. Если удалить звездочку перенаправляет только суб-путь:

routes.MapRoute(
        "Foo", 
        "Foo/{arg}", 
        new { controller = "Foo", action = "Redirect", arg = "" } 
       ); 

перенаправляет их к методу «Redirect» в соответствии с «Foo» контроллером:

www.domain.com/Foo/SubPath/ 

Это не перенаправляет Индекс или суб- пути к подпутью.

Смежные вопросы