将对象从javascript返回到silverlight

时间:2011-09-11 07:32:08

标签: c# javascript jquery silverlight silverlight-4.0

以下是我要采取的步骤:

1)用户在silverlight中输入搜索词到框中,然后按Enter键

2)搜索词通过C#代码传递到javascript:HtmlPage.Window.Invoke(“CallAPI”,SearchText);

3)CallAPI函数通过$ .getJSON&将值返回到JS回调函数[已经完成]

4)将结果对象返回到Silverlight / C#页面,以便在silverlight UI中显示

除了第4步,我可以做所有事情。如何从Javascript中获取JSON对象到C#?我在过去的几个小时里一直在研究这个问题,这就是我认为会做到的:

ScriptObject myScriptObject = (ScriptObject)HtmlPage.Window.Invoke("CallWordStreamAPI", SearchText);

我在JS& amp;中设置了一个断点。验证我的return语句中的对象肯定填充了20行数据,如预期的那样。

我在C#中设置断点(ScriptObject myScriptObject = ....),调用后myScriptObject为null。 如果我在“return r”(我的对象)行的firebug / chrome dev中设置断点,我可以看到r.data中列出了20个项目。如果我在上面列出的myScriptObject行之后设置断点,则myScriptObject为null。

感谢您的帮助。

斯科特

2 个答案:

答案 0 :(得分:0)

我是从服务器端的ViewModel调用它。我最终使用MVVM Messaging将关键字发送到客户端后面的代码。然后我调用了我的JS函数,返回结果,然后将消息重新发送到我的视图模型中。

除此之外,句法问题在这里得到解决:

How can I pass a JavaScript function to Silverlight?

答案 1 :(得分:0)

我的代码:

<!-- language: JavaScript -->
function sendText() {
    return "Hi from Javascript!";
}

<!-- language: C# -->
string obj = HtmlPage.Window.Invoke("sendText", null) as string;
txtReturnData.Text = obj;

<!-- language: VB.Net -->
Dim obj As String = TryCast(HtmlPage.Window.Invoke("sendText", Nothing), String)
txtReturnData.Text = obj