【问题标题】:Pass Array From C# COM object to JavaScript?将数组从 C# COM 对象传递给 JavaScript?
【发布时间】:2018-07-29 21:55:57
【问题描述】:

How do I return an array of strings from an ActiveX object to 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;
 }

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;
  }

我试过返回对象数组和字符串数组都无济于事。

【问题讨论】:

    标签: c# javascript arrays com activex


    【解决方案1】:

    您可以直接从您的 activeX 方法发送 JavaScript 数组,您的函数将是:

    public ArrayObject getAllFriendlyNames()
    {
        //.... the same ...... 
        return Microsoft.JScript.GlobalObject.Array.ConstructArray(friendlyNames);
    }
    

    将 Microsoft.JScript 引用添加到您的项目。


    MSDN:ArrayConstructor.ConstructArray Method

    【讨论】:

      【解决方案2】:

      您可以尝试将数据序列化为 json 并在客户端反序列化。 jQuery 内置了 json 函数。我已经用更复杂的对象做到了这一点,但没有用字符串数组,虽然我敢打赌它会很容易地工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2016-07-29
        • 1970-01-01
        • 2017-07-21
        • 2012-02-10
        相关资源
        最近更新 更多