Подобно этому Как Вернуть ли я массив строк из объекта ActiveX в JScript, но на C #.
У меня есть элемент управления COM, который возвращает массив строк в javascript. Кажется, что javascript не может понять, что я передаю, а массив в javascript всегда не определен.
Javascript:
try
{
keystore.openKeyStore("MY", true, false);
var fNames = new Array();
fNames = keystore.getAllFriendlyNames();
document.getElementById('par').innerHTML = fNames[0];
}
catch(err)
{
document.getElementById('err').innerHTML = err.description;
}
Это выводит "undefined" для fNames[0];
C #:
public object[] getAllFriendlyNames()
{
if (!keystoreInitialized)
throw new Exception("Key store has not been initialized");
X509Certificate2Collection allCerts = certificateStore.Certificates;
int storeSize = allCerts.Count;
if (storeSize == 0)
throw new Exception("Empty Key Store, could have opened using the wrong keystore name.");
object[] friendlyNames = new object[storeSize];
for (int i = 0; i < storeSize; i++)
{
string friendlyName = allCerts[i].FriendlyName;
if (friendlyName == "")
friendlyName = allCerts[i].Subject;
friendlyNames[i] = (object) friendlyName;
}
return friendlyNames;
}
Я пробовал возвращать как массивы объектов, так и массивы строк, но безрезультатно.
2 ответа
Вы можете попробовать сериализовать свои данные в json и десериализовать их на клиенте. jQuery имеет встроенные функции json. Я сделал это с более сложными объектами, но не со строковыми массивами, хотя готов поспорить, что это будет работать так же легко.
Вы можете отправить массив JavaScript прямо из вашего метода activeX, ваша функция будет:
public ArrayObject getAllFriendlyNames()
{
//.... the same ......
return Microsoft.JScript.GlobalObject.Array.ConstructArray(friendlyNames);
}
Добавление ссылки на Microsoft.JScript в ваш проект.
MSDN: ArrayConstructor.ConstructArray Метод
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.