如果在标记中你声明了这样的控件:
<asp:Label runat="server" AssociatedControlID="txtSomeInput">Some Input:</asp:Label>
<asp:Textbox id="txtSomeInput" runat="server" />
从标签控件中省略ID是否会改变与Viewstate或Page / Control生命周期有关的任何内容?它只是获得了一些生成的ID吗?显然它在设计时不能在代码隐藏中被引用(至少不是程序员)...只是好奇这是否有任何副作用(或有形的好处)?
此外,我认为如果在设计时无法引用此控件,则无法以向viewstate添加任何信息的方式进行实际更改...但是runat标记允许决定AssociatedControlID(母版页)例如crap id)因此不必具有带&lt;%#%&gt;的html标签写clientId ??
谢谢!
答案 0 :(得分:1)
从功能角度来看,它没有任何区别。需要ID才能正常运行的元素将自动生成一个。它确实在代码隐藏中通过名称引用控件,但仍然可能,它只需要手动查找并连接它。
答案 1 :(得分:0)
如果您使用的是运行脚本客户端的一些工具,则会出现一些副作用。例如,没有ID的按钮无法正确触发更新面板操作(在大多数情况下),因为当创建javascript时,应该捕获/重新路由哪些点击作为部分回发...缺少ID会使其失效列表中的(想想,你可以手动运行哪些javascript来附加没有它的处理程序?)。
按钮只需要右键单击处理程序,ID对于它触发服务器端的内容无关紧要......但这会使客户端脚本需要更多次。
作为旁注:如果你没有看过.Net 4,我建议你看看,the situation has vastly improved with ClientIDs。