将整数数组传递给ASP.NETWebAPI?

将整数数组传递给ASP.NETWebAPI?

我有一个ASP.NETWebAPI(Version 4)REST服务,在这里我需要传递一个整数数组。

以下是我的行动方法:

public IEnumerable<Category> GetCategories(int[] categoryIds){// code to retrieve categories from database}

这是我尝试过的网址:

/Categories?categoryids=1,2,3,4


交互式爱情
浏览 1262回答 3
3回答

素胚勾勒不出你

你只需要加上[FromUri]在参数之前,如下所示:GetCategories([FromUri]&nbsp;int[]&nbsp;categoryIds)并发出请求:/Categories?categoryids=1&categoryids=2&categoryids=3

DIEA

如菲利普W指出,您可能不得不使用这样的自定义模型绑定器(修改为绑定到实际类型的param):public&nbsp;IEnumerable<Category>&nbsp;GetCategories([ModelBinder(typeof(CommaDelimitedArrayModelBinder))]long[]&nbsp;categoryIds)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;your&nbsp;thing}public&nbsp;class&nbsp;CommaDelimitedArrayModelBinder&nbsp;:&nbsp;IModelBinder{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;BindModel(HttpActionContext&nbsp;actionContext,&nbsp;ModelBindingContext&nbsp;bindingContext) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;key&nbsp;=&nbsp;bindingContext.ModelName; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;val&nbsp;=&nbsp;bindingContext.ValueProvider.GetValue(key); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(val&nbsp;!=&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;s&nbsp;=&nbsp;val.AttemptedValue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(s&nbsp;!=&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;elementType&nbsp;=&nbsp;bindingContext.ModelType.GetElementType(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;converter&nbsp;=&nbsp;TypeDescriptor.GetConverter(elementType); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;values&nbsp;=&nbsp;Array.ConvertAll(s.Split(new[]&nbsp;{&nbsp;","},StringSplitOptions.RemoveEmptyEntries), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=>&nbsp;{&nbsp;return&nbsp;converter.ConvertFromString(x&nbsp;!=&nbsp;null&nbsp;?&nbsp;x.Trim()&nbsp;:&nbsp;x);&nbsp;}); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;typedValues&nbsp;=&nbsp;Array.CreateInstance(elementType,&nbsp;values.Length); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values.CopyTo(typedValues,&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindingContext.Model&nbsp;=&nbsp;typedValues; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;change&nbsp;this&nbsp;line&nbsp;to&nbsp;null&nbsp;if&nbsp;you&nbsp;prefer&nbsp;nulls&nbsp;to&nbsp;empty&nbsp;arrays&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindingContext.Model&nbsp;=&nbsp;Array.CreateInstance(bindingContext.ModelType.GetElementType(),&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;}}然后你可以说:/Categories?categoryids=1,2,3,4而ASP.NETWebAPI将正确地绑定categoryIds阵列。
打开App,查看更多内容
随时随地看视频慕课网APP