当我将数组传递给我的服务时,我遇到了问题,它只能识别数组中的第一个值:
这是我的请求对象:
[Route("/dashboard", "GET")]
public class DashboardRequest : IReturn<Dashboard>
{
public int[] EquipmentIds { get; set; }
}
以下是提出的请求:
http://localhost:9090/json/reply/DashboardRequest?EquipmentIds=1&EquipmentIds=2
但是当我在服务中观察数组时,它只包含一个值,即1
。
public object Get(DashboardRequest request)
{
// request.EquipmentIds.Length == 1;
// request.EquipmentIds[0] == 1;
}
我做过的一个解决方案是以下,看起来有点hacky?我认为在我的Request Object中指定它的意思是我得到一个强类型的Request Object?
var equipmentIds = Request
.QueryString["EquipmentIds"]
.Split(',')
.Select(int.Parse)
.ToList();
答案 0 :(得分:5)
这在您使用自定义路线时有效,例如:
[Route("/dashboard", "GET")]
public class DashboardRequest : IReturn<Dashboard>
{
public int[] EquipmentIds { get; set; }
}
并通过用户定义的路线调用它,例如:
http://localhost:9090/dashboard?EquipmentIds=1&EquipmentIds=2
Predefined Routes中的this commit也添加了对此的支持,现在可以从 v4.0.24 + available on MyGet获取。
因此,您现有的请求现在也可以使用,例如:
http://localhost:9090/json/reply/DashboardRequest?EquipmentIds=1&EquipmentIds=2
答案 1 :(得分:1)
将请求对象绑定到int数组,如
[Route("/dashboard/{EquipmentIds}", "GET")]
public class DashboardRequest : IReturn<Dashboard>
{
public int[] EquipmentIds { get; set; }
}
http://localhost:9090/dashboard/1,2