是否可以捕获控制器下的所有子路径?
在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()
我知道可以按照here的说明在404上捕获它,但我想在控制器级别捕获它们。
这是可能的,如果是这样的话?
答案 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/
它不会将索引或子路径重定向到子路径。