代码之家  ›  专栏  ›  技术社区  ›  davidsleeps

当ASP.NET控件没有ID时,页/控件生命周期中的影响是什么

  •  1
  • davidsleeps  · 技术社区  · 14 年前

    如果在标记中声明这样的控件:

    <asp:Label runat="server" AssociatedControlID="txtSomeInput">Some Input:</asp:Label>
    <asp:Textbox id="txtSomeInput" runat="server" />
    

    从Label控件中删除ID是否会更改与ViewState或页/控件生命周期相关的任何内容?它只是得到一些生成的ID吗?显然,它不能在设计时在代码背后被引用(至少程序员不会这样做)…只是好奇这是否有任何副作用(或有形的好处)?

    此外,我假定如果在设计时无法引用此控件,则无法以向ViewState添加任何信息的方式对其进行真正的更改…但是runat标记允许确定关联的ControlID(例如,母版页垃圾ID),因此不必使用带有<%%>的HTML标签来写入客户端ID?是吗?

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Rex M    14 年前

    从功能性的角度来看,它没有什么不同。需要ID才能正常工作的元素将自动生成一个ID。它确实使在代码背后按名称引用控件变得困难,但仍然有可能,它只需要手动查找并连接它。

        2
  •  0
  •   Nick Craver    14 年前

    一些副作用是如果您使用一些运行脚本客户端的工具。例如,没有ID的按钮不能正确地触发更新面板操作(在大多数情况下),因为在创建javascript时,应将单击的内容作为部分回发捕获/重新路由…缺少ID会使其不在列表中 (想想,如果没有它,您可以手动运行什么javascript来附加处理程序?) .

    这个按钮只需要右键单击处理程序,ID对于它触发服务器端的内容没有关系……但这使得客户机脚本需要更多的时间。

    旁注:如果你还没有看.NET 4,我建议你看一下, the situation has vastly improved with ClientIDs .