【问题标题】:What is affected in the Page/Control life cycle when an asp.net control has no ID当 asp.net 控件没有 ID 时,页面/控件生命周期会受到什么影响
【发布时间】:2010-02-12 01:11:00
【问题描述】:

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

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

从标签控件中省略 ID 是否会改变关于 Viewstate 或 Page/Control 生命周期的任何内容?它只是得到一些生成的ID吗?显然它不能在设计时在代码隐藏中被引用(至少程序员不会)......只是好奇这是否有任何副作用(或有形的好处)?

此外,我假设如果在设计时无法引用此控件,则它实际上不能以向视图状态添加任何信息的方式进行更改...但是 runat 标记允许决定 AssociatedControlID(母版页例如废话 ids)因此不必有一个带有 的 html 标签来编写 clientId??

谢谢!

【问题讨论】:

    标签: asp.net controls


    【解决方案1】:

    从功能的角度来看没有区别。需要 ID 才能正常运行的元素将自动生成一个。它确实使在代码隐藏中通过名称引用控件变得困难,但仍然可能,它只需要手动找到它并连接它。

    【讨论】:

    • 感谢您的澄清,我只是对从不需要引用的控件中删除 ID 真正感兴趣...在控件需要引用的地方,这就是 ID 的用途...
    【解决方案2】:

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

    按钮只需要右键单击处理程序,ID 与它在服务器端触发什么无关......但这使得客户端脚本需要更多的时间。

    附带说明:如果您还没有看过 .Net 4,我建议您看一下,the situation has vastly improved with ClientIDs

    【讨论】:

    • 好点,我一直在等待 .Net 4 多年......当他们去年宣布一些好处时,它确实会给 WebForms 一些额外的可信度
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多