在asp.net Web API中映射数组

时间:2013-03-07 21:04:16

标签: c# asp.net asp.net-web-api

我正在尝试将控制器功能映射到我的网络API。

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

问题是,在我的控制器中,ServiceID应该是一个数组。如何设置我的映射以接受数组,它会是什么样子?很抱歉,如果这是一个显而易见的问题,但我对这些内容非常不熟悉,而且我正在努力学习。

我理解如何使用常规参数执行此操作,类似于int我键入url/api/controller/method/5

我只是不知道该为阵列做些什么。

1 个答案:

答案 0 :(得分:0)

为了将复杂类型传递给Web API,您需要创建包含IENumerable类型的帮助器类,然后通过JSON封装将该对象传递到Web API。

以下示例接受POST方法并获取包含List的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; }
    }


}

Advanced Rest Client用于Chrome;您可以通过发送对象来测试帖子:

{myArray:[0,1,2]}

请注意,因为CustomListType有一个名为“myArray”的成员,所以我们的JSON对象中也有“myArray”。

如果你在那里放一个调试行,你应该能够看到“myArray”的对象和值