C# 메소드에서 JavaScript '기본'배열을 반환하는 방법은 무엇입니까?
-
22-07-2019 - |
문제
사용하여 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]);
다른 팁
당신은 할 수있다 리턴 구분 된 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를 통해 다음과 같이 작동 할 수 있습니다.
C#에서 객체를 반환합니다 (Dispinterface에서 선언).
jscript에서 기본 JS 배열을 얻으려면 vbarray를 사용하십시오.
var jsArray = new VBArray(myobj.GetArray()).toArray(); for (i = 0; i < jsArray.length; i++) { // use jsArray[i] }
배경 정보:
JScript는 변형의 Safearrays 만 지원합니다http://blogs.msdn.com/b/jaiprakash/archive/2007/01/09/jscript-supports-safearrays-of-variants-dony.aspx
스크립트 가능한 객체 모델의 서명 유형에 대한 Eric의 완전한 안내서http://blogs.msdn.com/b/ericlippert/archive/2004/07/14/183241.aspx
제휴하지 않습니다 StackOverflow