Вызов события javascript из пользовательского элемента управления ASP.NET и обработки на странице ASP.NET - PullRequest
4 голосов
/ 31 декабря 2008

На странице ASP.NET у меня есть пользовательский элемент управления, и я хочу выполнить в нем некоторые действия, используя JavaScript. Когда это действие будет завершено, я хочу вызвать событие (снова в javascript), которое будет подхвачено содержащейся страницей ASP.NET (снова в javascript).

Причина, по которой я хочу это сделать, заключается в том, что у меня есть более одного пользовательского элемента управления на странице, и мне нужно действие, выполняемое в одном пользовательском элементе управления, чтобы создать экземпляр действия в другом пользовательском элементе управления без выполнения обратной передачи.

Кто-нибудь знает, как это сделать?

Большое спасибо.


Привет и спасибо за ответ. Я пытаюсь создать инкапсуляцию. Так что, если код JavaScript делает что-то в одном пользовательском элементе управления, пользовательский элемент управления не должен знать о влиянии где-либо еще. Это вызвало бы событие в javascript, которое может быть поднято javascript на странице asp.net, который, в свою очередь, может вызвать метод javascript в другом пользовательском элементе управления, если это необходимо. Идея здесь также состоит в том, чтобы исключить необходимость обратной передачи.

Надеюсь, это расширится.

Ответы [ 2 ]

6 голосов
/ 31 декабря 2008

Я думаю, что простой способ реализовать то, что вы описываете, это забыть о событиях JavaScript и просто предоставить функцию «обратного вызова» для пользовательских элементов управления.

Способ, которым я бы это реализовал, состоял бы в том, чтобы выставить открытое свойство в пользовательском элементе управления, которое принимает имя этой JavaScript-функции "callback-function". Пользовательский элемент управления отвечает за вызов этой функции после завершения работы на стороне клиента.

Таким образом, страница, которая использует пользовательские элементы управления, должна будет реализовать эту JavaScript-функцию «обратного вызова», а затем предоставить имя в свойствах для пользовательских элементов управления.

Имеет смысл?

0 голосов
/ 31 декабря 2008

Вы можете просто запустить необходимый вам javascript из отрендеренного HTML вашего пользовательского элемента управления.

<a href="javascript:doSomething();">Click Me</a>

По звукам вещей вы хотите создать какую-то форму контроллера в JavaScript. Когда страница загружается, каждый из ваших элементов управления регистрируется в контроллере. Затем действие в одном из ваших элементов управления запускает функцию на контроллере, которая делает что-то с зарегистрированными в нем элементами управления.

Ваш JavaScript может быть таким простым: var oControls = new Array();</p> <p>doSomething = function() { for(var i=0;i<oControls.length;i++) { var oControl = document.getElementById(oControls[i]); oControl...... } }

Таким образом, вам нужно зарегистрировать свой элемент управления с помощью ScriptManager в методе визуализации пользовательских элементов управления.

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Startup", String.Format("oControls.push('{0}');", ClientID), True);

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