Как отправить двумерный массив из angular js в web API
У меня есть два решения, работающих на моем рабочем столе: одно-это веб-решение, использующее angularjs и вызывающее другое решение, которое представляет собой веб-API, основанный на MVC, и оба они написаны на языке vb.net. Все работает отлично, за исключением одного: когда я попытался отправить двумерное изображение, я получил ошибку ниже:
The request is invalid. The parameters dictionary contains an invalid entry for parameter 'myBiDimenArray' for method 'System.Web.Http.IHttpActionResult Calculate(System.String[,], Int32)' in 'CustomAPI.TestController'. The dictionary contains a value of type 'System.String[]', but the parameter requires a value of type 'System.String[,]'."
Ниже приведен мой код в angular js:
var myBiDimenArray = [ [1, 6], [5, 2], [9, 10] ]; console.log(myBiDimenArray); // it logs the array correctly return $http({ method: "GET", url: urlBase + "Calculate", params: { myBiDimenArray: myBiDimenArray, intSize: 1, }, headers: { 'Content-Type': 'application/json', 'X-ApiKey': 'test' , 'Authorization': 'Basic 123456' } });
Ниже приведен мой код в Web APi:
<HttpGet> Public Function Calculate(<FromUri> ByVal myBiDimenArray(,) As String, <FromUri> ByVal intSize As Integer) As IHttpActionResult .... End Function
Есть предложения?
Я новичок в этом деле, я искал, как создать двумерный массив в vb.net и в JavaScript, так что я реализовал вышеизложенное в своих решениях, но ошибка 400 выбрасывается и метод даже не доступен.
Обновление:
Обратите внимание, что это мой маршрут в файле конфигурации webAPi:
config.Routes.MapHttpRoute( _ name:="Test_Calculate", _ routeTemplate:="api/{controller}/{action}/{myBiDimenArray}/{intSize}", _ defaults:=New With {.controller = "Test", .action = "Calculate"} _ )
Может быть, это проблема конфигурации?
Что я уже пробовал:
Я изменил метод веб-APi на этот:
<HttpGet> Public Function Calculate(<FromUri> ByVal myBiDimenArray()() As String, <FromUri> ByVal intSize As Integer) As IHttpActionResult .... End Function
Метод можно было получить, длина myBiDimenArray была равна 3 (что правильно), но каждый массив внутри действовал как строка, например: "[1,6]" : 1 параметр вместо 2 параметров внутри массива;