2012-07-03 3 views
3

Итак, у меня есть элемент управления пользователя, который существует несколько раз на странице. С заднего конца я могу вызвать userControl1.someFunction(); и указать, какой пользовательский элемент управления я хочу вызвать someFunction() для. Но если у меня есть функция java-script на интерфейсе пользовательского элемента управления, я не могу назвать его для отдельных пользовательских элементов управления. Все, что мне нужно сделать, это вызвать javaFunction(), но это не указывает, какой пользовательский элемент управления я хочу вызвать. Так вот что я хотел бы сделать, clientsideUserControl1.javaFunction(); Возможно ли это сделать? То, что я делаю, это генерировать имя функции динамически IE: clientsideUserControl1_javaFunction(), но я чувствую, что должен быть лучший способ сделать это.ASP.NET Область управления пользователями для функций javascript

ответ

1

Оказывается, в этом случае было бы лучше использовать серверный контроль вместо пользовательского элемента управления. Управление серверами кажется немного сложнее, но они защищают рамки функций javascript.

Вот ссылка, в которой обсуждаются различия. http://www.hotscripts.com/forums/asp-net/31174-difference-between-user-control-custom-server-controls.html

+0

Если вы хотите использовать пользовательский элемент управления, это похоже на хороший способ защиты области -> http://programmerramblings.blogspot.com/2011/07/clientside-api-for-aspnet-user-controls .html –

-1

один из возможных решений заключается в следующем:

function <%= ClientID %>javaFunction() 
{ 
    //code here 
} 

вы будете иметь объявление функции для каждого пользовательского элемента управления с идентификатором клиента имени

+0

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

+0

Это сработает, но это действительно уродливое решение. Гораздо лучший способ решить эту проблему упоминается здесь: http://stackoverflow.com/questions/4416705/javascript-functions-inside-asp-net-user-control –

+0

@Jakub Szułakiewicz благодарит за это. Кстати, если вам действительно нужно лучшее решение, вы должны прекратить использование веб-форм :) этому ответу 4 года –

3

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

Таким образом, вам не нужно иметь несколько копий одной и той же функции javascript.

Таким образом, вместо

function CLIENTID_javascriptFunction{ 
} 

Вы бы на функцию на глобальном уровне:.

function javascriptFunction(id){ 

} 

и вызвать его с идентификатором объекта йот вас интересует (использование ClientID, чтобы получить идентификатор DOM элемента управления)

+0

да ур прав, но иногда мне приходилось идти (CLIENTID_javascriptFunction) вместо передачи большого количества параметров глобальному объявленная функция –

Смежные вопросы