У меня проблема с расширением <% = obj.ClientID%> в пользовательском элементе управления .ascx.
У меня есть файл .js, содержащий функцию javascript:
function doSomething(objectId)
{
...
}
У меня есть файл .ascx с некоторыми элементами html, и в одном элементе onclick = я хочу вызвать doSomething (), передавая идентификатор элемента в этот файл .ascx, где переданный идентификатор является элементом другого чем тот, на который нажали, поэтому я не могу использовать «это».
Может быть, с примером будет понятнее.
Это работает:
<script type="text/javascript">
function redirect()
{
doSomething('<%= top.ClientID %>');
}
</script>
<div id="top" runat="server">
<img src="..." alt="..." onclick="redirect();"/>
</div>
Но это не так:
<div id="top" runat="server">
<img src="..." alt="..." onclick="doSomething('<%= top.ClientID %>');"/>
</div>
Когда я смотрю на источник, я вижу, что подстановка <% =%> не произошла, вместо "doSomething ('ctl00_myControl_top');"; Я получаю "doSomething ('<% = top.ClientID%>');"
По какой-то причине расширение сценария происходит в первом случае, но не во втором. Обходной путь, конечно, неприемлем, потому что он сломается, если я включу несколько копий элемента управления на странице - будет доступна только функция «redirect ()» одного экземпляра.
Любые идеи о том, как сделать эту замену?