2008-09-09 142 views
0

我正在使用Silverlight應用程序,我希望利用Microsoft ASP.NET AJAX客戶端庫。我使用屬於Silverlight 2的HTML橋來調用庫.Silverlight在JavaScript和託管代碼之間傳遞類型方面得到了很大的支持,但現在我遇到了一個問題。將Silverlight類型傳遞給Microsoft AJAX並傳遞參數驗證

Microsoft ASP.NET AJAX客戶端庫包含一個「類型系統」,並且框架所做的一件事是驗證參數的類型是否正確。我打電話的具體功能是Sys.Application.addHistoryPoint,並驗證代碼如下所示:

var e = Function.validateParams(arguments, [ 
    {name: "state", type: Object}, 
    {name: "title", type: String, mayBeNull: true, optional: true} 
]); 

我試圖通過各種CLR類型的狀態參數(C#結構,[ScriptableTypes ],字典類型等。每當我得到錯誤:「Sys.ArgumentTypeException:類型'功能'的對象不能轉換爲'對象'類型。

此錯誤顯然來自參數驗證...但爲什麼ASP.NET AJAX認爲我的類型是函數?有誰知道MS AJAX中的類型驗證?

我知道我c做一些變通方法,如調用HtmlPage.Window.Eval(「...」)並將我的JS集成作爲字符串傳遞,但我不想那樣做。我想傳遞一個真實的.NET類型作爲狀態參數。

回答

1

我發現這個here的一個很好的概述,但即使這個概述似乎涵蓋除了你提到的一個情況。我想知道這是不是可以做到的,因爲javascript對象確實是函數(或多或少)。

如果你編寫了一個可以使用字符串創建狀態對象的包裝函數呢?