假设我在SilverLight中有一个类:
public class GenericClass {
public string filedOne = "field one";
public string filedTwo = "field two";
}
我想通过以下方式将其实例传递给JavaScript:
function callback(obj) {
console.log(obj.fieldOne);
}
如果没有序列化到JSON并返回,这可能吗?
更新
我知道如何传递原始值 - 这不是问题。我需要传递一个包含多个字段的对象。
答案 0 :(得分: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; }
}
答案 1 :(得分:3)
[ScriptableType]
public class SMT_ScriptableManagedType
{
[ScriptableMember(EnableCreateableTypes = false)] // No access
public string GetString1()
{ return "abcdefg"; }
public string GetString2() // Can be accessed.
{ return "123456"; }
}
现在你可以pass the object这样:
HtmlPage.Window.Invoke("ReceiveSMT", new SMT_ScriptableManagedType());
其中ReceiveSMT是一个javascript函数,它将接收对象作为参数。