2009-10-23 11 views
22

So che ClientID viene utilizzato per javascript e UniqueId per il lato server e che ClientID utilizza un trattino di sottolineatura (_) e UniqueId utilizza un segno di dollaro ($) in asp.net 2.0. Ma quello che non capisco è perché usare due ID diversi. Perché non è possibile solo O utilizzare il carattere di sottolineatura O utilizzare il segno del dollaro in entrambi: lato server e lato client. Qualcuno può spiegarlo?C# asp.net Perché c'è una differenza tra ClientID e UniqueID?

risposta

12

(Oltre alla mia risposta originale al di sopra)

Beh, come probabilmente sapete UniqueID viene utilizzato con l'attributo nome e ClientId con l'attributo id del tag HTML rendering. UniqueID utilizza i due punti come separatore. D'altra parte ClientId utilizza il carattere di sottolineatura come separatore, poiché i due punti non sono consentiti nei nomi delle variabili JavaScript. ClientID è anche univoco nella pagina come UniqueID, ma ClientID è mirato all'elaborazione lato client e UniqueID per lato server (piuttosto ovvio), quest'ultimo in particolare per instradare i dati e gli eventi postback con i controlli compositi

Tuttavia Penso che alcuni ragionamenti potrebbero essere che usare il carattere di sottolineatura come separatore nei normali ID di controllo è un comportamento abbastanza comune e quindi il carattere di sottolineatura non può essere usato in UniqueID come separatore di controllo (se teoricamente pensiamo di gestire con una proprietà), perché non si può fare distinzione tra i controlli. D'altra parte per lo stesso ragionamento, non è possibile utilizzare due punti in ID controllo, Page Framework non lo consente, in modo che si assicuri che i due punti non possano accedere agli ClientID (questo a causa di JavaScript non piace) .

E per questi motivi, colon è una scelta piuttosto buona da utilizzare in UniqueID, poiché il metodo FindControl può utilizzarlo per spostarsi nella struttura di controllo e individuare i controlli (può dividere facilmente UniqueID).

6

this.UniqueID è il nome del controllo aggiunto a tutti i contenitori di denominazione, come un nome di controllo completo. this.ClientID è il valore che apparirà nell'attributo id del controllo, è una traduzione di l'ID univoco (beh quasi) conforme all'HTML (i caratteri di sottolineatura non sono realmente compatibili con html).

+0

Quindi, i caratteri di sottolineatura iniziali non sono (realmente) conformi a HTML. Allora perché non usare i simboli del dollaro? Perché non utilizzare ClientId sul lato server invece di UniqueId? Sono entrambi esattamente gli stessi, l'unica differenza è l'uso del segno del dollaro e sottolineatura. – Martijn

+0

Lo scopo di ClientID è restituire l'ID identificativo univoco del controllo (è equivalente a UniqueID ma utilizza il carattere di sottolineatura come separatore di controllo) che può essere utilizzato nello script sul lato client. – JamesM

+1

Penso che tu non abbia capito il mio punto :) A Javascript non piacciono i segni del dollaro e quindi usa i caratteri di sottolineatura. Questo è chiaro ora. Quindi la mia prossima domanda è: perché non usare i caratteri di sottolineatura sul lato server? Quindi, perché non usare ClientID sul server? Perché deve esserci una proprietà distinta che utilizza i segni del dollaro? Perché i caratteri di sottolineatura non possono essere utilizzati sul server? – Martijn

Problemi correlati