2015-01-20 35 views
0

所以,我有三個不同的優惠措施:MVC網頁API路由多獲取有不同的參數

public IHttpActionResult Get(){ 
//get all entries 
} 

public IHttpActionResult Get(int id){ 
//get an entry based on an ID 
} 

public IHttpActionResult Get(int page =0, int pageSize = 2){ 
//Pagination:get entries by pages of 2 entries 
} 

起初我用了兩個第一方法工作需要使用此路由是罰款:

config.Routes.MapHttpRoute("Default", 
     "api/{controller}/{id}", 
     defaults: new { controller = "project", id = RouteParameter.Optional } 
); 

添加具有兩個參數的第三個Get操作後,它開始返回一個異常:找到與請求匹配的多個操作。順便說一句,我發送頁面參數作爲查詢字符串,如下所示:api/project/?page=0。 我明白,最後兩個動作是問題的根源,路由器無法決定哪一個匹配,但我還沒有能夠拿出正確的路由功能。 雖然,我已經使用屬性路由哪種解決了問題:Route [「api/project/{page:int}/{pageSize:int}」]我更感興趣的是使用舊的路由方式來解決這個問題。 對於冗長的信息,我表示歉意,並提前感謝您的時間。

回答

0

嘗試改變這種

public IHttpActionResult Get(int page =0, int pageSize = 2){ 
//Pagination:get entries by pages of 2 entries 
} 

public IHttpActionResult Get(int? page, int pageSize = 2){ 
//Pagination:get entries by pages of 2 entries 
} 
+0

THX的快速回答隊友,可惜我沒有工作:(我想我需要集中精力使另一路由功能的具體的尋呼行動:/ – Orochi1992 2015-01-22 14:52:38

+0

你可以使用只有一個路由,與ID,頁面和pagesize作爲可選 (int?id,int?page,int?pageSize) – 2015-01-22 15:58:04

+0

嗯我不認爲這是可行的,因爲其中一個只獲取每次通過id檢索一個對象國家一次返回一個包含幾個對象的頁面。 – Orochi1992 2015-01-23 20:01:11