2

我正在尝试将控制器功能映射到我的 web api。

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

问题是,在我的控制器中,ServiceID 应该是一个数组。如何设置我的映射以接受数组,它会是什么样子?对不起,如果这是一个明显的问题,但我对这些东西非常不熟悉,我正在努力学习。

我了解如何使用常规参数来执行此操作,例如 int 我会输入url/api/controller/method/5

我只是不知道如何处理数组。

4

1 回答 1

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; }
    }


}

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

{myArray:[0,1,2]}

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

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

于 2013-03-07T22:55:20.600 回答