Javascript не будет работать на сервере управления Html? - PullRequest
1 голос
/ 31 октября 2011

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

У меня будет много html generic controls, как <div> <span> и т. Д.

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

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

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

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

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

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

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

Например,

<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>

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

Ответы [ 2 ]

1 голос
/ 31 октября 2011

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

var myDiv1 = document.getElementById("<%= myDiv1.ClientID %>");
0 голосов
/ 31 октября 2011

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

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