Domanda

So che ClientID è usato per javascript e UniqueId per lato server e che ClientID usa un trattino basso (_) e UniqueId usa un segno di dollaro ($) in asp.net 2.0. Ma quello che non capisco è perché usare due ID diversi. Perché non è possibile semplicemente utilizzare il carattere di sottolineatura OPPURE utilizzare il segno di dollaro in entrambi: lato server e lato client. Qualcuno può spiegare questo?

È stato utile?

Soluzione

(Oltre alla mia risposta originale sopra)

Bene, come probabilmente saprai, UniqueID viene utilizzato con l'attributo name e ClientId con l'attributo id del tag HTML renderizzato. 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 è davvero anche unico nella Pagina come UniqueID lo è, ma ClientID è mirato all'elaborazione lato client e UniqueID per lato server (abbastanza ovvio), quest'ultimo in particolare per instradare dati ed eventi postback con controlli compositi

Comunque penso che alcuni ragionamenti potrebbero essere che l'uso del trattino basso come separatore nei normali ID controllo è un comportamento abbastanza comune e quindi il trattino basso non può essere usato in UniqueID come separatore controllo (se teoricamente pensiamo di gestirlo con una proprietà), perché non potresti fare una distinzione tra i controlli. D'altra parte per lo stesso ragionamento, non è possibile utilizzare i due punti negli ID di controllo, Page Framework non lo consente, quindi si assicura che i due punti non possano raggiungere i ClientID (questo perché a causa di JavaScript non piace) .

E per questi motivi, i due punti sono una scelta abbastanza buona da usare in UniqueID, perché il metodo FindControl può usarlo per navigare nella struttura di controllo e individuare i controlli (può facilmente dividere UniqueID).

Altri suggerimenti

this.UniqueID è il nome del controllo aggiunto a tutti i contenitori dei nomi, pensalo come il nome di controllo completo. this.ClientID è il valore che apparirà nell'attributo id del controllo, è una traduzione di uniqueid è un tag id (ben quasi) conforme html (leader i trattini bassi non sono realmente compatibili con HTML).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top