2

假设我在 SilverLight 中有一堂课:

public class GenericClass {

    public string filedOne = "field one";

    public string filedTwo = "field two";

}

我想将它的一个实例传递给 JavaScript 以通过以下方式访问:

function callback(obj) {
    console.log(obj.fieldOne);
}

如果不序列化到 JSON 并返回,这可能吗?

更新:

我知道如何传递原始值——这不是问题。我需要传递一个包含多个字段的对象。

4

2 回答 2

3
public partial class TestPage: UserControl
{
    public TestPage()
    {
        InitializeComponent(); 
        MyClass myObject = new MyClass();
        myObject.SomeMember = "TEST";
        HtmlPage.Window.Invoke("JSFunction", myObject);
    }        
}

更新:为了将非原始类型对象传递给 javascript;类定义应标有ScriptableType属性。该类的所有属性也应标有ScriptableMember属性。

[ScriptableType]
public class MyClass
{
    [ScriptableMember]
    public string SomeMember { get; set; }    
}
于 2012-08-24T14:01:49.007 回答
3

使用ScriptableTypeAttribute

[ScriptableType]                       
public class SMT_ScriptableManagedType
    {
    [ScriptableMember(EnableCreateableTypes = false)] // No access
     public string GetString1()
        { return "abcdefg"; }

     public string GetString2()            // Can be accessed.
        { return "123456"; }
}

现在您可以像这样传递对象

HtmlPage.Window.Invoke("ReceiveSMT", new SMT_ScriptableManagedType());

其中 ReceiveSMT 是一个 javascript 函数,它将接收对象作为参数。

于 2012-08-24T14:11:47.563 回答