2011-02-25 72 views
0

我目前有一個在.Net 2.0中創建的DLL,它具有一個COM可見組件,該組件可用作IE內網頁上的ActiveX對象。將.Net ActiveX控件(DLL)中的自定義類傳遞給Javascript

該概念正常工作,調用函數,引發事件,來回傳遞變量。問題伴隨着複雜的信息類別。

例如,我有這個類:

public class ClientInfo { 
    public ClientInfo() { } 

    public ClientInfo(DataRow dr) 
    { 
     ClientName = dr["Name"].ToString(); 
     Address = dr["Address1"].ToString(); 
    } 

    public string ClientName; 
    public string Address; 
} 

這是很簡單的。然後我必須返回構建一個數組的函數時發出的上述類:

ArrayList arr = new ArrayList(); 

foreach (DataRow r in dsClients.Tables[0].Rows) 
{ 
    arr.Add(new ClientInfo(r)); 
} 

return arr.ToArray(); 

從當這個函數被調用JavaScript中,回報是不確定的。當從另一個.Net項目(包含一個簡單的按鈕來測試這個問題)調用時,它工作正常。

看來我需要通過JavaScript(JSON?)將返回對象轉換爲更易於訪問的東西,或者可能需要在JavaScript中定義返回變量的類型。

任何幫助,將不勝感激。

編輯:當然,因爲不包括淨直到3.5,而我們的目標是2.0

回答

1

JSON是隻是文字,所以你應該能夠創建自己的JSON我不能使用序列化。

看看這個鏈接,實現 http://geekswithblogs.net/Mochalogic/articles/103330.aspx

也許嘗試json.net enter link description here

一旦你有你的客戶端瀏覽器的JSON所有你需要做的將其轉換爲一個對象調用eval。看看Douglas Cockford的網站,以獲得更強大的json eval解決方案。

+0

看看JSON.net似乎是最好的選擇。有趣的是,2.0實際上引用了3.5框架(對於linq等)。我發現一個較舊的1.3版本,現在似乎正在工作。讓我在我的dll中包含代碼,因爲有源代碼,所以我們可以更容易地部署它。非常感謝! – elbweb 2011-02-25 21:19:31

相關問題