Web api路由:可选参数

时间:2012-07-11 15:45:27

标签: routing asp.net-web-api url-template

我有这条路线:

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

'id'应该是可选的,'myparam'应该是可选的,但如果'myparam'被设置,'id'不能是可选的。我该如何配置?

1 个答案:

答案 0 :(得分: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。请注意,第二条路线中没有任何段是可选的。