【问题标题】:Pass Silverlight type to Microsoft AJAX and pass parameter validation将 Silverlight 类型传递给 Microsoft AJAX 并传递参数验证
【发布时间】:2008-09-09 06:20:44
【问题描述】:

我正在开发一个希望利用 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: 'Function' 类型的对象无法转换为'Object' 类型

这个错误显然来自参数验证...但是为什么 ASP.NET AJAX 认为我的类型是函数?有人了解 MS AJAX 中的类型验证吗?

我知道我可以做一些变通方法,比如调用 HtmlPage.Window.Eval("...") 并将我的 JS 集成作为字符串传递,但我不想这样做。我想传递一个真正的 .NET 类型作为状态参数。

【问题讨论】:

    标签: javascript ajax silverlight asp.net-ajax htmlbridge


    【解决方案1】:

    我发现了这个here 的一个很好的概述,但即使是那个概述似乎也涵盖了除了你提到的那个之外的所有场景。我想知道这是否无法完成,因为 javascript 对象确实是函数(或多或少)。

    如果您编写了一个可以使用字符串创建状态对象的包装函数会怎样?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多