2011-08-25 28 views
8

Ok, sono piuttosto confuso riguardo agli ID dei controlli creati dinamicamente.ID vs UniqueID vs ClientID vs UniqueClientID vs 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 

Perché i 5 ID diversi ??

Quando utilizzare le diverse modalità ID?

(ho letto la documentazione MSDN, ma erano, come al solito, non è particolarmente illuminante.)

Se non mi interessa quello che l'ID è, e voglio solo aggiungere un controllo & dare il suo ID a un extender AJAX aggiunto dinamicamente, quale combinazione di modalità/ID dovrei usare?

+0

se non ti interessa abs perché li aggiungi in primo luogo – Baz1nga

+1

Penso che i documenti MSDN per .NET siano molto buoni in confronto a ... SharePoint per esempio –

risposta

16
  • L'ID è l'ID server che si utilizza nel codice.
  • L'oggetto UniqueId corrisponde all'attributo "nome" dell'elemento HTML generato.
  • Il ClientID corrisponde all'attributo "id" dell'elemento html generato. Quindi dipende dall'attributo di cui hai bisogno (il nome viene inviato con il modulo post, l'id è usato per la manipolazione del DOM).
  • Non sono sicuro che l'uniqueclientid è :)

ASP.Net 4 aggiunge ClientIDMode che permette di forzare l'attributo id per abbinare il lato server id (e quindi essere più prevedibile) se si è imposta su "static ".

+1

si dovrebbe probabilmente notare che nel codice sottostante, ' ClientID' e 'UniqueID' sono entrambi getter e readonly, mentre' ID' è di lettura-scrittura e impostabile. – johntrepreneur

1

Utilizzare la proprietà ClientID.

ClientIDMode è lì per supportare la possibilità di impostare al 100% l'ID effettivo utilizzato dal controllo ... o meno. La tua scelta. Fondamentalmente aiuta a scrivere il codice javascript.

1

ClientIDMode è stato aggiunto a ASP.NET 4 per consentire il controllo se lo si desidera. È particolarmente utile per le librerie lato client come jQuery. La magia di ASP.NET dipende dall'unicità dei controlli. Se hai deciso di utilizzare Static assicurati che siano unici, in quanto potresti incontrare alcuni errori di runtime inattesi lungo la strada.

Problemi correlati