2011-06-13 100 views
1

可以這樣做嗎?從javascript發送字節數組到silverlight

下面是什麼是不工作的片段,與異常失敗:

function SendBytesJS() { 
    var control1 = document.getElementById('sl1'); 
    bytes = new Array(1, 2, 3); 
    control1.Content.MainPage.SendBytesSL(bytes); 
} 

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 

     System.Windows.Browser.HtmlPage.RegisterScriptableObject("MainPage", this); 
    }   

    [System.Windows.Browser.ScriptableMember] 
    public void SendBytesSL(byte[] bytes) 
    { 
     // never gets here 
    } 
} 

回答

0

的HTML橋不支持字節數組和Javascript只能理解整數和浮動(實際上是雙)。

數組以object[]的形式傳遞,數字總是作爲double傳遞。因此,你的代碼需要看起來更像如下: -

// Warning untested code 
[ScriptableMember] 
public void SendBytesSL(object[] arrayIn) 
{ 
    byte[] bytes = arrayIn.Select(o => Convert.ToByte(o)).ToArray(); 
} 
+1

好了吧,這裏是一個測試方法----版[System.Windows.Browser.ScriptableMember] 公共無效SendBytesSL(對象bytesArray) var array =(ScriptObject)bytesArray; var len =(int)((double)array.GetProperty(「length」)); var bytes = new byte [len]; (int i = 0; i dzolnjan 2011-06-13 12:48:56