Javascript ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?

Javascript ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?,javascript,asp.net,ajax,vb.net,dom,Javascript,Asp.net,Ajax,Vb.net,Dom,好吧,我对动态创建的控件的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

好吧,我对动态创建的控件的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 extender,我应该使用哪个模式/ID组合?

使用ClientID属性


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

ClientIDMode被添加到ASP.NET 4中,以便在需要时进行控制。它对于客户端库(如jQuery)特别有用。NET的神奇之处在于控件的独特性。如果您决定使用Static,请确保它们是唯一的,因为您可能会遇到一些意外的运行时错误。

  • ID是您在代码中使用的服务器端ID
  • UniqueId对应于生成的HTML元素的“name”属性
  • ClientID对应于生成的html元素的“id”属性。所以这取决于您需要哪个属性(名称随表单post一起发送,id用于DOM操作)
  • 不确定uniqueclientid是什么:)

ASP.NET4添加了clientIdMode,如果将id属性设置为“静态”,则可以强制id属性与服务器端id匹配(从而更容易预测).

如果您不关心abt ID,为什么首先要添加它们?我认为.NET的MSDN文档与SharePoint相比非常好。例如,应该注意的是,在后面的代码中,
ClientID
UniqueID
都是getter和readonly,而
ID
是读写和可设置的。