H.AL Ответов: 0

Как отправить двумерный массив из 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 параметров внутри массива;

0 Ответов