抓住所有"子路径" belon到某个控制器

时间:2016-11-22 00:10:46

标签: asp.net-mvc-4

是否可以捕获控制器下的所有子路径?

FooControllerBarController下,我想将所有在其控制器中没有匹配方法的链接重定向到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()

我知道可以按照here的说明在404上捕获它,但我想在控制器级别捕获它们。

这是可能的,如果是这样的话?

1 个答案:

答案 0 :(得分: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 = "" }
                );

将这些重定向到"重定向" " Foo"下的方法控制器:

www.domain.com/Foo/SubPath/

它不会将索引或子路径重定向到子路径。