如何让ASP MVC4 / Web API完全忽略路由?

时间:2013-08-30 11:23:42

标签: asp.net-mvc asp.net-mvc-4

我在SPA应用程序中设置了映射。基本映射使用Web API和以下内容:

    routes.MapRoute(
        "spa",
        "{section}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new { section = @"home|admin" });

当用户输入/ home / abc时,它会调用home控制器和索引方法。

我如何才能使其成为如下所示的三个部分的请求

/home/abc/def
/home/overview/123
/home/xx/12
/home/anything/anything

完全被忽略了?请注意,我实际上并不需要id参数,但我把它留在这里,因为它似乎没有区别,仍然调用home控制器和索引方法。

4 个答案:

答案 0 :(得分:2)

可以采取一种解决方法..

使用 IRouteConstraint 编写一个Constraint类,并为 id 参数添加该约束。 然后在那里编写自己的逻辑来检查请求中传递的URL段,并根据您的URL要求返回TRUE / FALSE ...

有意义???

答案 1 :(得分:2)

忽略home/acb/后使用通配符。类似的东西:

 routes.IgnoreRoute("home/abc/{*pathinfo}");

/

之后,home/abc会忽略任何内容

答案 2 :(得分:1)

确保您已删除默认路线:

//routes.MapRoute(
//    name: "Default",
//    url: "{controller}/{action}/{id}",
//    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

答案 3 :(得分:-1)

也许只是添加它们以便被忽略

    routes.IgnoreRoute(route1)