【发布时间】:2011-01-08 00:47:54
【问题描述】:
我在 .ascx 用户控件中遇到 扩展问题。
我有一个 .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('');”
由于某种原因,脚本扩展发生在前一种情况下,但不是在后一种情况下。当然,这种解决方法是不可接受的,因为如果我在一个页面上包含多个控件副本,它会中断 - 只有一个实例的“redirect()”函数可以访问。
关于如何使这种替换起作用的任何想法?
【问题讨论】:
-
你有一个表单标签内的 div 是 runat='server' 对吗?
-
整个服务器控件包含在一个带有 runat="server"、div 和脚本部分的表单标签中。
标签: asp.net javascript clientid