Работает ли вызов Silverlight из JavaScript только при вызове кнопкой HTML? - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь, чтобы простой блок кода JS вызывал мой элемент управления Silverlight через мост HTML. Все из дюжины сэмплов, которые я прочитал ВСЕ показывают, используя кнопку 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!");
} 

Выше работает отлично. Вызывается функция JS 'CallSilverlight' и вызывается мой метод Silverlight. Хорошо, в моем сценарии мне нужно нажать кнопку управления сервером ASP.NET, выполнить некоторую обработку и , а затем вызвать функцию JS. Достаточно просто, в блоке finally события нажатия кнопки ASP.NET я регистрирую функцию JS: CallSilverlight () и , действительно она вызывается (точка останова работает). Однако я всегда получаю сообщение «неизвестное исключение» от отладчика при вызове метода Silverlight и все!

Я предполагаю, что PostBack вызывает проблему, потому что в этом основное отличие кнопки HTML от кнопки ASP.NET. Есть ли проблема с использованием кнопки ASP.NET и последующим вызовом JS, как у меня, и если нет, то что я могу делать неправильно?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Еще раз понял это довольно скоро после публикации вопроса - серверные элементы управления ASP.NET (т.е. кнопки) могут использоваться.Однако события на стороне клиента должны использоваться для вызова функции JS, которая вызывает методы сценариев Silverlight, а не для регистрации JS в PostBack.Поэтому кнопка должна выглядеть следующим образом:

<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

0 голосов
/ 10 февраля 2012

Не имея доступа к этому внешнему коду, я предполагаю, что регистрация Silverlight Javascript не запускается браузером после завершения PostBack, и поэтому элемент управления больше не регистрируется.Если это частичный PostBack, это может иметь место.

Вам просто нужно убедиться, что он зарегистрирован.

Еще одна вещь, которая помешает регистрации элемента управления Silverlight на мосту Javascript, - это если он скрыт css.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...