2012-07-05 8 views
8

私は、次の簡単なシナリオをサポートするために必要なルーティング設定をうまくするのに苦労しています:MVC 4のWeb API - 複合キーのためのルート

http..service/api/objects/key1/key2 

私はすべてを試みたように私は感じます。

最大の問題は、それが、私はそれを割れてきたように見える時はいつでも、私は

http..service/api/objects/key1 

ゲットのIQueryableパラメータなしにルーティングされることを見つけることです。

答えて

4

私はそれを釘付けにしたと思います。

routes.MapHttpRoute(
    name: IQueryableObjectsApiRouteName, 
    routeTemplate: "api/objects", 
    defaults: new { controller = "objects" } 
); 

routes.MapHttpRoute(
    name: ObjectsApiRouteName, 
    routeTemplate: "api/objects/{siteId}/{assetId}", 
    defaults: new { controller = "objects", siteId = "", assetId = "" } 
); 

複合キーを使用して各コントローラに2つの明示的なルートを設定する必要があります。キーのデフォルト値は ""で、コントローラーで検出して404を投げます。

これは私のために働きます。私は今、昼食に行くことができます。

+0

コントローラメソッドのパラメータを指定できますか? :)コンポジットキーでどのように見えるかを知りたいです。 – Roylee

+1

申し訳ありませんRoylee、私はその契約/クライアントを離れました。私はそれが単に 'public SomeModel Get(string siteId、string assetId)'であると思います。 –

+0

その大丈夫:)私はそれを持っていただろう:)はい、あなたは正しい – Roylee

関連する問題