我正在开发一个希望利用 Microsoft ASP.NET AJAX 客户端库的 Silverlight 应用程序。我正在使用作为 Silverlight 2 一部分的 HTML Bridge 调用该库。Silverlight 对在 JavaScript 和托管代码之间传递类型提供了很好的支持,但现在我遇到了一个问题。
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 中的类型验证吗?
我知道我可以做一些变通方法,比如调用HtmlPage.Window.Eval("...")
并将我的 JS 集成作为字符串传递,但我不想这样做。我想传递一个真正的 .NET 类型作为状态参数。