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

これにはおそらく 2 つのルートを定義する必要があると思います。

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

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

最初のルートは、ID が含まれているかどうかに関係なくすべての URL に一致し、2 番目のルートは id と myparam の両方の値を含む URL に一致します。2 番目のルートではオプションのセグメントがないことに注意してください。

于 2012-07-12T16:53:51.890 に答える