Javascript не будет работать на сервере управления Html?

#asp.net #html #servercontrol

#asp.net #HTML #servercontrol

Вопрос:

Я пишу ASP.Net веб-сайт с.

У меня будет много html generic controls подобных <div> <span> и так далее..

У меня есть некоторые onclick функции javascript onmouseover , функции javascript..

Они работают нормально..

Тогда мне нужно управлять ими на стороне сервера.

Итак, я добавляю runat="server" ..

После этого все javascripts больше не работают..

Я понимаю, что они не работают, потому что все события теперь возвращаются на сервер.

Итак, есть ли способ заставить их работать??

Например,

 <div id="myDiv1" onclick="myfunction(para1)"><img src="..." /></div>
  

приведенный выше код работает..

 <div id="myDiv1" runat="server" onclick="myfunction(para1)"><img src="..." /></div>
  

приведенный выше код не работает…

Я могу заставить это работать, вероятно, с помощью

 <div id="externalDiv1" onclick="myfunction(para1)"><div id="myDiv1" runat="server" ><img src="..." /></div></div>
  

Есть ли другой способ?

Комментарии:

1. Код? То, что вы предлагаете, на самом деле не имеет смысла.

2. Как выглядит javascript, который не работает?

3. хорошо.. javascript предназначен для изменения класса css <img> внутри его тега.

Ответ №1:

Я предполагаю, что вы использовали document.getElementById(), чтобы получить элемент по его идентификатору. Если вы используете мастер-страницы, идентификаторы серверных элементов управления будут изменены после рендеринга на странице, в этом случае вы должны использовать его ClientID для, например

 var myDiv1 = document.getElementById("<%= myDiv1.ClientID %>");
  

Ответ №2:

Элементы управления на стороне сервера или клиента не имеют никакого значения для javascript. ВСЕ элементы управления на стороне сервера в конечном итоге отображаются как обычные элементы управления HTML. Если ваши функции javascript не работают, это может быть связано с тем, что вы обращаетесь к ним по неправильному идентификатору, поскольку, сделав их элементами управления на стороне сервера, они теперь могут иметь идентификаторы, которые следуют шаблону, подобному <parent_id>_<control_id> .

Например, элемент span, объявленный следующим образом:

 <span id="mylabel" runat="server"> testing</span>
  

может в конечном итоге отображаться как:

 <span id="MainContent_mylabel"> testing</span>
  

ASP.NET В версии 4.0 есть функция, CliendIDMode которая может быть установлена на static значение , означающее, что ваши идентификаторы в разметке останутся неизменными после рендеринга страницы.