문제

사용하여 JavaScript의 C# 메소드를 호출하려고합니다. ActiveXObject:

var myobj = new ActiveXObject('myobject');
var arr = myobj.GetArray();

결국, arr a를 포함합니다 SAFEARRAY 대상이지만 그렇지 않습니다 JScript 정렬. C# 메소드에서 기본 JavaScript 객체를 반환하는 방법이 있습니까?

도움이 되었습니까?

해결책 2

나는 혼자서 해결책을 찾았지만이 부분에는 문서가 존재하지 않습니다. 해결책은 사용하는 것입니다 JScript.ArrayObject 다음 방법으로 :

ArrayObject _lastField;
byte[] byteArray = new byte[]{2,1,2,3};
object[] array = new object[byteArray.Length];
byteArray.CopyTo(array, 0);
_lastField = Microsoft.JScript.GlobalObject.Array.ConstructArray(array);

그 후에 당신은 사용할 수 있습니다 _lastField 기본 배열과 같은 JavaScript 배열 :

var myobj = new ActiveXObject('myobject');
var arr = myobj.LastField;
alert(arr[1]);

다른 팁

당신은 반환 할 수 있습니다 JSON 문자열을 한 다음 JavaScript 객체로 구문 분석합니다. .NET 객체를 JSON으로 직렬화하고 그 반대로

몇 가지 이름을 지정합니다.

이것 질문과 답변 당신에게 사용될 수 있습니다

당신은 할 수있다 리턴 구분 된 String C#에서 JavaScript로 분할 될 수 있습니다

//C#
public string getArryString()
{
string[] arrstring = new string[]{"1","2","3"};
return string.Join(",", arrstring);
}

//Javascript
var arrstring = objActiveX.getArryString().split(',');

vbarray를 통해 다음과 같이 작동 할 수 있습니다.

  1. C#에서 객체를 반환합니다 (Dispinterface에서 선언).

  2. jscript에서 기본 JS 배열을 얻으려면 vbarray를 사용하십시오.

    var jsArray = new VBArray(myobj.GetArray()).toArray();
    for (i = 0; i < jsArray.length; i++) 
    {
       // use jsArray[i]
    }
    

배경 정보:

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top