我的 MVC 4 Web 服务有一个新用例。我需要将查询字符串上的参数列表传递给 Web API,例如,
http://host/SomeWebApi?arg=x&arg=y
我以前在我的网站控制器中使用控制器ICollection<string> arg
中的参数简单轻松地做到了这一点。现在可以了,但它是一个网页,而不是 API。
现在,我正试图让同一事物的 Web API 版本正常工作。我在下面制作了一个简单的测试界面,并且集合 arg 始终为空。我已经尝试过List<string>
,并且也尝试过string[]
。我在看什么?
路线登记:
config.Routes.MapHttpRoute(
name: "Experiment",
routeTemplate: "Args",
defaults: new
{
controller = "Storage",
action = "GetArgTest",
suite = UrlParameter.Optional,
},
constraints: new
{
httpMethod = new HttpMethodConstraint(new HttpMethod[] { new HttpMethod("GET") })
}
);
Web API 控制器代码:
public string GetArgTest(ICollection<string> suite)
{
if (suite == null)
{
return "suite is NULL";
}
else
{
return "suite is NON-NULL";
}
}
测试导致“suite is NULL”的查询字符串:
http://localhost:5101/Args?suite=1&suite=2