的Web API参数绑定不能几个参数从查询字符串转换成一个数组,所以你有两个选择:
第二个选项包括获取查询字符串名称 - 值对,并自己解析它们。要获取名称值对,用这个:
Request.GetQueryNameValuePairs()
要提取整型值,你可以做这样的事情:
var values= Request.GetQueryNameValuePairs()
.Where(kvp => kvp.Key == "someVal")
.Select(kvp => int.Parse(kvp.Value))
.ToArray();
当然,你应该在解析控制误差等。这是一个基本的示例代码。
这是第一个选项模型绑定的实现:
public class IntsModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
if (bindingContext.ModelType != typeof (Ints))
{
return false;
}
var intValues = actionContext.Request.GetQueryNameValuePairs()
.Where(kvp => kvp.Key == bindingContext.ModelName)
.Select(kvp => int.Parse(kvp.Value))
.ToList();
bindingContext.Model = new Ints {Values = intValues};
return true;
}
}
再次,这是一个基本的实现,在其他事物之间,没有误差的控制。
这是在一个动作中使用它的方法之一,但是,请阅读参数绑定看到使用它的其他(更好)的方式链接:
// GET api/Test?keys=1&keys=7
public string Get([ModelBinder(typeof(IntsModelBinder))]Ints keys)
{
return string.Format("Keys: {0}", string.Join(", ", keys.Values));
}
想知道,如果它是W3C兼容多次出现查询字符串参数 –