#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
значение , означающее, что ваши идентификаторы в разметке останутся неизменными после рендеринга страницы.