2011-08-25 6 views
8

De acuerdo, estoy bastante confundido acerca de los ID de los controles creados dinámicamente.ID vs UniqueID vs ClientID vs UniqueClientID versus StaticClientID?

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 

¿Por qué las 5 ID diferentes ??

¿Cuándo debe usar los diferentes modos de identificación?

(He leído la documentación de MSDN, pero eran, como de costumbre, no es particularmente esclarecedor.)

Si no me importa lo que es la identificación, y sólo quiero agregar un control & dar su ID a un extensor AJAX agregado dinámicamente, ¿qué combinación de modo/ID debo usar?

+0

si no le importan los ids por qué agregarlos en primer lugar – Baz1nga

+1

Creo que los documentos de MSDN para .NET son muy buenos en comparación con ... SharePoint por ejemplo –

Respuesta

16
  • La ID es la ID de servidor que utiliza en su código.
  • El identificador único corresponde al atributo "nombre" del elemento HTML generado.
  • El ClientID corresponde al atributo "id" del elemento html generado. Por lo tanto, depende de qué atributo necesite (el nombre se envía con la publicación del formulario, el ID se usa para la manipulación del DOM).
  • No está seguro de lo que el uniqueclientid es :)

ASP.Net 4 añade ClientIDMode que le permite forzar el atributo id para que coincida con el ID de serverside (y por lo tanto ser más predecibles) si se establece a "estático ".

+1

, probablemente debería tenerse en cuenta que en el código de atrás, ' ClientID' y 'UniqueID' son ambos getters y readonly, mientras que' ID' es de lectura-escritura y configurable. – johntrepreneur

1

Utilice la propiedad ClientID.

ClientIDMode está para apoyar la capacidad de establecer al 100% la identificación real utilizada por el control ... o no. Tu elección. Básicamente ayuda a escribir código de JavaScript.

1

ClientIDMode se agregó a ASP.NET 4 para permitir el control si lo desea. Es particularmente útil para bibliotecas del lado del cliente como jQuery. La magia de ASP.NET depende de la singularidad de los controles. Si decidiste usar Static, asegúrate de que sean únicos, ya que es posible que enfrentes algunos errores inesperados en el tiempo de ejecución.

Cuestiones relacionadas