我正在使用类似于以下的代码从 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/