ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?

发布于 2024-12-01 11:13:45 字数 1136 浏览 1 评论 0原文

好吧,我对动态创建的控件的 ID 很困惑。

Public Class TestClass
    Inherits Panel
    Implements INamingContainer

    Function TestClassInit() Handles Me.Init

        Dim pnlMainPanel As New Panel
        Me.Controls.Add(pnlMainPanel)

        Dim pnlTest1 As New Panel
        pnlMainPanel.Controls.Add(pnlTest1)

        pnlTest1.ClientIDMode = UI.ClientIDMode.Inherit ' DEFAULT
        'pnlTest1.ID = "ctl01"
        'pnlTest1.UniqueID = "ctl00$MainPanel$ctl01"
        'pnlTest1.ClientID = "MainPanel_ctl01"
        'pnlTest1.UniqueClientID = "ctl00_MainPanel_ctl01"
        'pnlTest1.StaticClientID = ""

        pnlTest1.ClientIDMode = UI.ClientIDMode.Predictable
        'pnlTest1.ClientID = "MainPanel_ctl01" (no change)

        pnlTest1.ClientIDMode = UI.ClientIDMode.AutoID
        'pnlTest1.ClientID = "ctl00_MainPanel_ctl01"

        pnlTest1.ClientIDMode = UI.ClientIDMode.Static
        'pnlTest1.ClientID = ""

    End Function
End Class

为什么有5个不同的ID?

什么时候应该使用不同的 ID 模式?

(我阅读了 MSDN 文档,但它们和往常一样,并不是特别有启发性。)

如果我不关心 ID 是什么,而只想添加一个控件和将其 ID 提供给动态添加的 AJAX 扩展程序,我应该使用哪种模式/ID 组合?

Okay, I'm pretty confused about the IDs of dynamically created controls.

Public Class TestClass
    Inherits Panel
    Implements INamingContainer

    Function TestClassInit() Handles Me.Init

        Dim pnlMainPanel As New Panel
        Me.Controls.Add(pnlMainPanel)

        Dim pnlTest1 As New Panel
        pnlMainPanel.Controls.Add(pnlTest1)

        pnlTest1.ClientIDMode = UI.ClientIDMode.Inherit ' DEFAULT
        'pnlTest1.ID = "ctl01"
        'pnlTest1.UniqueID = "ctl00$MainPanel$ctl01"
        'pnlTest1.ClientID = "MainPanel_ctl01"
        'pnlTest1.UniqueClientID = "ctl00_MainPanel_ctl01"
        'pnlTest1.StaticClientID = ""

        pnlTest1.ClientIDMode = UI.ClientIDMode.Predictable
        'pnlTest1.ClientID = "MainPanel_ctl01" (no change)

        pnlTest1.ClientIDMode = UI.ClientIDMode.AutoID
        'pnlTest1.ClientID = "ctl00_MainPanel_ctl01"

        pnlTest1.ClientIDMode = UI.ClientIDMode.Static
        'pnlTest1.ClientID = ""

    End Function
End Class

Why the 5 different IDs??

When should you use the different ID modes?

(I read the MSDN docs, but they were, as usual, not particularly illuminating.)

If I don't care what the ID is, and just want to add a control & give its ID to a dynamically added AJAX extender, which mode/ID combo should I use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谁把谁当真 2024-12-08 11:13:45
  • 该 ID 是您在代码中使用的服务器端 ID。
  • UniqueId 对应于生成的 HTML 元素的“name”属性。
  • ClientID 对应于生成的 html 元素的“id”属性。所以这取决于你需要哪个属性(名称通过表单发布发送,id 用于 DOM 操作)。
  • 不确定 uniqueclientid 是什么:)

ASP.Net 4 添加了 clientIdMode,如果将其设置为“静态”,它允许您强制 id 属性与服务器端 id 匹配(从而更可预测)。

  • The ID is the serverside ID that you use in your code.
  • The UniqueId corresponds to the "name" attribute of the generated HTML element.
  • The ClientID corresponds to the "id" attribute of the generated html element. So it depends which attribute you need (name is sent with form post, id is used for DOM manipulation).
  • Not sure what the uniqueclientid is :)

ASP.Net 4 adds clientIdMode which allows you to force the id attribute to match the serverside id (and thus be more predictable) if you set it to "static".

我一向站在原地 2024-12-08 11:13:45

使用 ClientID 属性。

ClientIDMode 支持 100% 设置控件使用的实际 ID 的能力……或不支持。你的选择。基本上它有助于编写 javascript 代码。

Use the ClientID property.

ClientIDMode is there to support the ability to 100% set the actual ID used by the control..or not. Your choice. Basically it aids in writing javascript code.

叫思念不要吵 2024-12-08 11:13:45

ClientIDMode 已添加到 ASP.NET 4 中,以允许您根据需要进行控制。它对于 jQuery 等客户端库特别有用。 ASP.NET 的魔力取决于控件的独特性。如果您决定使用静态,请确保它们是唯一的,因为您可能会遇到一些意外的运行时错误。

The ClientIDMode was added to ASP.NET 4 to allow control if you want it. It is particularly useful for client side libraries such as jQuery. ASP.NET's magic hinges on the uniqueness of controls. If you decided to use Static make sure they are unique, as you may face some unexpected runtime errors down the road.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文