2013-07-18 3 views
3

는이 같은 기능을 얻기 위해 배열을 전달하는 방법을 알고 /?index=1&index=5&index=3패스 배열/ASP.NET 웹 API

을하지만이 같은 배열을받을 수 있어야합니다 : /?index=[1,5,3]

또는 비슷하게 짧은 것. 내가 사용할 수 있는게있어?

+0

이 도움이 될 수 있습니다 : HTTP : //stackoverflow.com/questions/6243051/how-to-pass-an-array-within-a-query-string 이를 테스트하는 한 가지 방법은 다중 선택, 여러 옵션 선택 및 요청 서식 지정 방법과 서버 해석 방법을 통해 GET 동작을 사용하여 양식을 작성하는 것입니다. – David

+1

대체 솔루션 양식을 사용해 보셨습니까? http://stackoverflow.com/questions/9981330/how-to-pass-an-array-of-integers-to-a-asp-net-web-api-rest- 서비스? rq = 1? – nemesv

답변

2

사용자 정의 ModelBinder 사용하여 Global.asax에 등록 그런

public class JsArrayStyleModelBinder : DefaultModelBinder 
{ 
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 

     if (value == null) 
      return null; 

     return new JavaScriptSerializer().Deserialize<string[]>(value.AttemptedValue); 
    } 
} 

을 : 직접

ModelBinders.Binders.Add(typeof(string[]), new JsArrayStyleModelBinder()); 

또는 당신의 Action 매개 변수에 :

[HttpGet] 
public ActionResult Show([ModelBinder(typeof(JsArrayStyleModelBinder))] string[] indexes) 
+2

'JavaScriptSerializer' 대신'String.Split'을 사용할 수도 있습니다. – haim770