2012-02-09 13 views
0

JS Bridgeの単純なブロックを使って、SilverlightコントロールをHTML Bridge経由で呼び出そうとしています。 私はにとても似クリックでアップ有線JS機能でHTMLボタンを使用して、すべてのショーを読んだダースかそこらのサンプルの全てJavaScriptからSilverlightを呼び出すのは、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メソッドが呼び出されます。 OK私のシナリオでは、私はASP.NETサーバーコントロールボタンを押す必要がありますいくつかの処理と JS関数が呼び出されている。 JS関数を登録するASP.NETボタンのクリックイベントの最後のブロックで、十分に簡単です:CallSilverlight()と実際には呼び出されます(ブレークポイントが機能します)。しかし、私はいつもSilverlightメソッドを呼び出すときにデバッガから"不明な例外"というメッセージが表示されます。

私はPostBackが問題を引き起こしていると仮定します。これは、それがHTMLボタンとASP.NETの主な違いです。 ASP.NETボタンを使用してJSを呼び出しているときに問題はありますか?もしそうでなければ、私は間違っていますか?

答えて

0

質問を投稿した直後にもう一度考え直してください - ASP.NETサーバーコントロール(ボタン)を使用してください。しかし、クライアントサイドのイベントは、PostBackにJSを登録しようとするのではなく、Silverlightスクリプト可能メソッドを呼び出す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

+1

良い仕事。 。 。 。 – bperreault

0

フロントエンドコードにアクセスすることなく、PostBackの完了後にSilverlight Javascriptの登録がブラウザで実行されないため、コントロールが登録されなくなったと思います。それが部分的なポストバックの場合、これが当てはまるかもしれません。

あなたはそれが登録されていることを確認する必要があります。

SilverlightコントロールがJavascriptブリッジに登録されないようにするもう1つの要素は、CSSによって隠されている場合です。

+0

が合理的なサウンド - あなたはSL制御まで、そのJS関数を呼び出す遅延する場所について何か提案を持っています登録されていますか? – atconway

+0

私は、PostBackからSilverlightを登録するためにJavascriptを送信することを考えています。おそらくそれをLiteralコントロールに置くことでしょう。私はそれがコントロールを再登録すると思います。一緒に遊ぶのは面白いだろう。 – bperreault

関連する問題