的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兼容多次出現查詢字符串參數 –