Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JavaScript调用Silverlight是否仅在被HTML按钮调用时有效?_Javascript_Asp.net_Silverlight - Fatal编程技术网

从JavaScript调用Silverlight是否仅在被HTML按钮调用时有效?

从JavaScript调用Silverlight是否仅在被HTML按钮调用时有效?,javascript,asp.net,silverlight,Javascript,Asp.net,Silverlight,我试图让一个简单的JS代码块通过HTML桥调用我的Silverlight控件。我读过的十几个左右的示例中,所有的都是使用HTML按钮显示的,在单击时带有连接的JS函数,就像这样: <input id="Button1" type="button" value="Test Call To SL" onclick="return CallSilverlight()" /> function CallSilverlight() { var SLControl = documen

我试图让一个简单的JS代码块通过HTML桥调用我的Silverlight控件。我读过的十几个左右的示例中,所有的都是使用HTML按钮显示的,在单击时带有连接的JS函数,就像这样:

<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!");
} 

函数CallSilverlight(){
var SLControl=document.getElementById(“MySLControl”);
SLControl.Content.Page.UpdateText(“来自Javascript的你好!”);
} 
上述方法非常有效。调用JS函数“CallSilverlight”,并调用我使用的Silverlight方法。在我的场景中,我需要按下ASP.NET服务器控件按钮,进行一些处理,然后调用JS函数。很简单,在ASP.NET按钮单击事件的最后一个块中,我注册了JS函数:CallSilverlight(),它确实被调用了(断点工作)。但是,在调用Silverlight方法时,我总是从调试器中得到一条“未知异常”消息,就是这样


我认为回发导致了这个问题,因为这是HTML按钮和ASP.NET按钮之间的主要区别。使用ASP.NET按钮然后按我的方式调用JS有什么问题吗?如果没有问题,我可能会做得不正确吗?

如果没有访问前端代码,我猜回发完成后浏览器不会运行Silverlight Javascript注册,因此不再注册控件。如果是部分回发,可能就是这样

你只需要确保它已注册


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

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

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

听起来很合理-在SL控件注册之前,您对在何处延迟调用JS函数有什么建议吗?我想我应该发送Javascript以注册回发的Silverlight-可能将其放入文本控件中。我认为这样会重新注册控件。和他一起玩会很有趣的。