javascript - 如何在 Silverlight 中访问 Javascript 对象的属性?

标签 javascript silverlight serialization

我正在使用类似于以下的代码从 Silverlight 访问 Javascript 对象(其形式类似于: { 1 : "Option 1", 2 : "Option 2", 3 : "Option 3" } ):

dynamic window = HtmlPage.Window;
var options = window.GlobalObject.getDropdownItems();

现在的问题是options现在类型为 ScriptObject 。如果我知道 Javascript 对象的属性名称是什么,这就不成问题了(我可以执行 options.GetProperty(1) 来获取第一个选项的标签)。但是,这不起作用,因为我需要选项的值和名称。有什么方法可以将其转换为 Dictionary<int, string>或者类似的东西?

最佳答案

您可以更改选项的输入吗?如果你是,这就是我的建议。

将值的输入更改为以下内容:

function getDropdownItems() {
    var items = [{ Value: 1, Name: "Option 1" }, { Value: 2, Name: "Option 2" }, { Value: 3, Name: "Option 3"}];
    return items;
}

然后在 Silverlight 中您可以轻松地将其转换为类型化对象。

public class Option
{
    public int Value { get; set; }
    public string Name { get; set; }
}

private void LoadOptions()
{
    dynamic window = HtmlPage.Window;
    var dynamicoptions = window.getDropdownItems();

    ScriptObject scriptObject = dynamicoptions as ScriptObject;

    if (scriptObject != null)
    {
        var options = scriptObject.ConvertTo<Option[]>();
        if (options != null)
        {
        }
    }
}

我发现这是使用 javascript 对象的最简单方法。

关于javascript - 如何在 Silverlight 中访问 Javascript 对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4102342/

相关文章:

javascript - 单击两个链接时显示一个 Div

silverlight - 从网络打印 "raw text"(ZPL)

java - 当bean类的字段结构周期性变化时,如何反序列化同一个bean类的不同版本?

javascript - 为什么向后迭代数组比向前迭代更快

javascript - 将 php 的响应返回到 jquery

c# - WPF:如何以编程方式从 ScrollViewer 中提取滚动条?

java - HashMap<String,Double> 的格式错误的二进制序列化

java - 我应该在接口(interface)上实现 `serialVersionUID` 吗?

javascript - Node.js - 使用 cookie 的多个请求

silverlight - 最小化丢失数据包对通过 TCP 发送的实时媒体流的影响的最佳方法是什么?