2013-03-07 68 views
2

數組我試圖映射了一個控制器功能到我的網頁API。映射在asp.net的Web API

config.Routes.MapHttpRoute(
       name: "RPCRoutingApiCaseStudy", 
       routeTemplate: "api/{controller}/{action}/{ServiceID}", 
       defaults: new { ServiceID = RouteParameter.Optional } 
      ); 

問題是,在我的控制器中,ServiceID應該是一個數組。我如何設置我的映射來接受一個數組,它會是什麼樣子?對不起,如果這是一個明顯的問題,但我很不熟悉這個東西,我試圖學習。

我知道如何用常規參數,其中喜歡INT做,我會輸入url/api/controller/method/5

我只是不知道該怎麼對一個數組做。

+0

請參閱本文這裏的值 - [網絡API捕獲所有路由參數綁定(HTTP:// www.tugberkugurlu.com/archive/asp-net-web-api-catch-all-route-parameter-binding) – 2013-03-07 21:32:37

回答

0

爲了複雜類型傳遞到網頁API,你需要做的是包含然後一個IEnumerable類型的對象傳遞到通過JSON封裝在Web API是輔助類。

下面的示例接受一個POST方法和採用包含一個列表中的一個CustomListType對象。然後,你可以做你喜歡的物體。

public class ValuesController : ApiController 
{ 

    [System.Web.Http.AcceptVerbs("POST")] 
    public bool POST(CustomListType myList) 
    { 
     //Do stuff here 

     return true; 
    } 

    public class CustomListType 
    { 
     public List<int> myArray { get; set; } 
    } 


} 

對Chrome使用Advanced Rest Client;您可以通過發送對象測試後:

{myArray:[0,1,2]} 

注意,因爲CustomListType有一個名爲成員「myArray的」我們也有我們的JSON對象「myArray的」。

如果你把調試行中有你應該能夠看清物體和「myArray的」

+0

這是沒有意義的,客戶端發送的數組。控制器將其綁定到'myList',然後枚舉'myList'將數據添加到模型綁定器已經綁定的相同類型。 – 2013-03-07 22:59:58

+0

控制器沒有做任何生產。我想我想說明的是,如果你做了另一個CustomListType,你仍然必須用List 類型實例化myArray成員。 – Tony 2013-03-08 00:03:51

+0

對,但模型活頁夾會爲你做。 – 2013-03-08 01:53:54