从HTML按钮调用时,从JavaScript调用Silverlight是否有效?

时间:2012-02-09 20:29:35

标签: javascript asp.net silverlight

我试图让一个简单的JS代码块通过HTML Bridge调用我的Silverlight控件。 我已阅读 ALL 的十几个样本的所有显示使用带有有线JS功能的HTML按钮,如下所示:

<input id="Button1" type="button" value="Test Call To SL" onclick="return CallSilverlight()" />

function CallSilverlight() {

    var SLControl = document.getElementById("MySLControl");
    SLControl.Content.Page.UpdateText("Hello from Javascript!");
} 

以上工作完美。调用JS函数'CallSilverlight'并调用我所拥有的Silverlight方法。在我的场景中,我需要按下ASP.NET服务器控件按钮,进行一些处理,然后调用JS函数。很简单,在ASP.NET按钮单击事件的finally块中,我注册了JS函数:CallSilverlight()和确实它被调用(断点工作)。但是,在调用Silverlight方法时,我总是从调试器收到 “未知异常” 消息,就是这样!

我认为PostBack引起了问题,因为这是HTML按钮和ASP.NET按钮之间的主要区别。使用ASP.NET按钮然后像我一样调用JS有什么问题,如果不是我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

如果无法访问该前端代码,我猜想在PostBack完成后浏览器不会运行Silverlight Javascript注册,因此不再注册该控件。如果是部分PostBack,可能就是这种情况。

您只需要确保它已注册。

阻止Silverlight控件注册Javascript桥的另一件事是它是否被css隐藏。

答案 1 :(得分:0)

在发布问题后很快就想到了这一点 - 可以使用ASP.NET服务器控件(即按钮) 。但是,客户端事件必须用于调用调用Silverlight脚本化方法的JS函数,而不是尝试在PostBack上注册JS。因此按钮需要如下所示:

<asp:Button ID="Button1" runat="server" Text="Test Call To SL" OnClientClick="return CallSilverlight()" />

Button.OnClientClick属性:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx