3

我有这条路线:

routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}/{myparam}",
                defaults: new { id = RouteParameter.Optional, myparam = RouteParameter.Optional }
            );

“id”应该是可选的,“myparam”也应该是可选的,但如果设置了“myparam”,则“id”不能是可选的。我该如何配置?

4

1 回答 1

5

我猜你可能需要为此定义两条路线:

routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

routes.MapHttpRoute(
            name: "DefaultApiWithMyParam",
            routeTemplate: "api/{controller}/{id}/{myparam}"
        );

第一个路由将匹配所有 URL,无论它们是否包含 ID,而第二个路由将匹配包含 id 和 myparam 值的 URL。请注意,第二条路线中没有任何段是可选的。

于 2012-07-12T16:53:51.890 回答