我有一个问题,为什么单独中继器中的 2 个控件如果位于更新面板中则不能具有相同的 ID,但如果它们不在更新面板中则可以共享相同的 ID。看到这段代码...
<asp:Repeater ID="rptFirstRepeater" runat="server">
<ItemTemplate>
<asp:Image runat="server" ID="imgThisWorks" />
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Image runat="server" ID="imgThisDoesntWork" />
</ContentTemplate>
</asp:UpdatePanel>
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="rptSecondRepeater" runat="server">
<ItemTemplate>
<asp:Image runat="server" ID="imgThisWorks" />
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Image runat="server" ID="imgThisDoesntWork" />
</ContentTemplate>
</asp:UpdatePanel>
</ItemTemplate>
</asp:Repeater>
生成此错误:
CS0102: The type 'ASP._8_admin_testemail_aspx' already contains a definition for 'imgThisDoesntWork'
但如果您不使用更新面板,它就可以正常工作,就像这样。
<asp:Repeater ID="rptFirstRepeater" runat="server">
<ItemTemplate>
<asp:Image runat="server" ID="imgThisWorks" />
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="rptSecondRepeater" runat="server">
<ItemTemplate>
<asp:Image runat="server" ID="imgThisWorks" />
</ItemTemplate>
</asp:Repeater>
我知道中继器中的所有控件都被赋予了新的 ID,例如......
ctl00_cttBody_ucTestControl_rptFirstRepeater_ctl00_imgThisWorks
这也不适用于更新面板吗?
我可以使用相同的 ID 使上面的代码工作吗? - 请忽略这一事实:这 2 个中继器实际上应该是一个中继器! :)
谢谢,查尔斯。
这似乎是一个已知的错误,微软决定不修复:
http://connect.microsoft.com/VisualStudio/feedback/details/417230/updatepanel-breaks-naming-containers-compile-time-bug http://connect.microsoft.com/VisualStudio/feedback/details/417230/updatepanel-breaks-naming-containers-compile-time-bug
目前,我们决定不解决这个具体问题。
幸运的是,有一个非常简单的解决方法 - 避免使用相同的
UpdatePanel 内部和外部的控件 ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)