2012-07-05 103 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 = "" } 
); 

我需要設置兩個顯式路由到每個控制器與複合鍵。鍵的默認值是「」,我在控制器中檢測到並拋出自己的404.

它適用於我。我現在可以去吃午飯了。

+0

你能指定你的控制器方法參數嗎? :)我想知道它如何看起來與複合鍵 – Roylee 2013-07-01 16:16:41

+1

對不起羅利,我已經離開了合同/客戶端。儘管如此,我期望它僅僅是'public SomeModel Get(string siteId,string assetId)'。 – 2013-07-01 16:28:56

+0

好吧:)我知道了:)是的,你是對的 – Roylee 2013-07-01 17:07:45