나는 90 % 기능을 갖춘 웹 API를 만들었습니다. 내가 막힌 곳은 웹 API를 사용하여 jQuery 스타일 배열로 인코딩 된 매개 변수를 받아들이는 방법이다. 여기 내 GET 요청입니다 :웹 API - 배열 urlencoded 매개 변수 허용
GET /api/v1/Trades?take=3&skip=0&page=1&pageSize=3&sort%5B0%5D%5Bfield%5D=tradeName&sort%5B0%5D%5Bdir%5D=asc
인코딩되지 않은 요청은 다음과 같습니다
GET /api/v1/Trades?take=3&skip=0&page=1&pageSize=3&sort[0][field]=tradeName&sort[0][dir]=asc
이 스타일은 jQuery의 $.param 방법은 요청을 직렬화하는 방법과 일치한다. 이것을 Web API의 매개 변수로 어떻게 받아들입니까? 내 방법은 다음과 같은 메시지가 500 오류를 수신,이 경우
[System.Web.Http.HttpGet]
[System.Web.Http.Route("api/v1/Trades")]
public IHttpActionResult GetTrades(int page = -1, int pageSize = -1, int skip = -1, int take = -1, string[,] sort = null)
{
// Do stuff ...
}
: 나는 다음 시도했다
선택적 매개 변수 '종류'가 'FormatterParameterBinding'에 의해 지원되지 않습니다. 내 메소드가 호출되는,
public IHttpActionResult GetTrades(string[,] sort, int page = -1, int pageSize = -1, int skip = -1, int take = -1) { // Do stuff ... }
이 사용하지만, 일종의
null
은 항상 :
나는 또한이 시도했습니다.
public IHttpActionResult GetTrades(object sort, int page = -1, int pageSize = -1, int skip = -1, int take = -1)
{
// Do stuff ...
}
다시 말하지만, 내 방법은 호출되는,하지만 일종의 null
은 항상 : 나는 또한 다음과 같이 좀 더 일반적인 시도했습니다.
어떤 제안이 도움이 될 것입니다!
[MVC 컨트롤러에 대한 다차원 배열] 가능한 복제본 (https://stackoverflow.com/questions/14309007/multidimensional-array-to-mvc-controller) –
@CaiusJard - 이것은 동일하지 않습니다. 다차원 배열을 전달하려고하지 않고 MVC 컨트롤러에 전달하려고하지 않습니다. 다른 jQuery 스타일 배열을 전달하려고합니다. 귀하가 게시 한 사본의 솔루션이 제게 적합하지 않습니다. 또한 MVC 컨트롤러에 전달하려고하지 않습니다. 웹 API 컨트롤러에 전달하려고합니다. – Icemanind
MVC 컨트롤러에 제공되는 솔루션을 상황에 맞게 적용 할 수 없다는 귀하의 주장에 따라 가까운 투표를 철회했습니다. MS가 웹 API 라우팅과 비교하여 MVC 라우팅을위한 완전히 다른 구문 분석 루틴을 구현 한 것이 놀랍지 만, 분명히 이제는 제대로 된 결과를 얻지 못했습니다. 의견을 주셔서 감사합니다 –