0

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

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

当用户进入 /home/abc 时,它会调用 home 控制器和 index 方法。

我怎样才能使它像下面这样的请求包含三个部分

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

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

4

4 回答 4

2

它可以作为一种解决方法..

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

说得通???

于 2013-08-30T12:31:24.850 回答
2

忽略后使用通配符home/acb/。就像是:

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

那应该忽略/后面的任何内容home/abc

于 2013-08-30T12:34:27.647 回答
1

确保您已删除默认路由:

//routes.MapRoute(
//    name: "Default",
//    url: "{controller}/{action}/{id}",
//    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
于 2013-08-30T13:11:38.873 回答
-1

也许只是添加它们被忽略

    routes.IgnoreRoute(route1)
于 2013-08-30T12:28:32.307 回答