Почему я получаю только первый элемент в массиве Javascript, переданный из Silverlight? - PullRequest
2 голосов
/ 19 октября 2010

Я пытаюсь передать массив строк из приложения Silverlight в функцию Javascript. Однако мне кажется, что я получаю только первый элемент массива, а не весь массив. Я воспроизвел его с помощью простого кода ниже:

Silverlight:

 string[] Names = new string[5];
 Names[0] = "Test1";
 Names[1] = "Test2";
 Names[2] = "Test3";
 Names[3] = "Test4";
 Names[4] = "Test5";

 HtmlPage.Window.Invoke("PopulateNames", Names);

Javascript:

function PopulateNames(names)
{
    window.alert(names);
}

В этом случае я только когда-либо увижу «Test1» с вышеуказанным кодом или «неопределенный», если я заменю window.alert (names) на window.alert (names [0]).

Кто-нибудь знает, как мне это сделать, чтобы получить все элементы для функции Javascript?

Ответы [ 2 ]

3 голосов
/ 19 октября 2010

Метод Invoke принимает массив параметров.
Поэтому ваши пять строк передаются в качестве пяти строковых параметров в функцию.

Вам нужно передать вложенный массив, например:

HtmlPage.Window.Invoke("PopulateNames", new object[] { Names });
2 голосов
/ 30 октября 2012

Есть еще одно свойство объекта функции javascript.Свои аргументы.Вы можете получить доступ ко всему массиву объектов, который вы передаете через этот объект аргументов.Попробуйте отладить ваш скрипт, и вы поймете, что я говорю.Если вы обращаетесь к массиву аргументов функции, например 'funcation(myargs[])', myargs будет ссылаться на первое значение в переданном массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...