我在 .ascx 用户控件中遇到 <%= obj.ClientID %> 扩展问题。
我有一个 .js 文件,其中包含一个 javascript 函数:
function doSomething(objectId)
{
...
}
我有一个 .ascx 文件,其中包含一些 html 元素,并且在一个元素的 onclick= 中,我想调用 doSomething(),传递该 .ascx 文件中元素的 ID,其中传递的 ID 是一个元素以外的元素被点击,所以我不能使用“this.”。
也许举个例子会更清楚。
这有效:
<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()”函数可以访问。
关于如何使这种替换起作用的任何想法?