Wiem, że ClientID jest używany dla javascript i UniqueId dla strony serwera, a to ID klienta używa podkreślenia (_), a UniqueId używa znaku dolara ($) w asp.net 2.0. Ale nie rozumiem, dlaczego używam dwóch różnych identyfikatorów. Dlaczego nie można po prostu LUB użyć znaku podkreślenia LUB użyć znaku dolara zarówno po stronie serwera, jak i klienta. Czy ktoś może to wyjaśnić?C# asp.net Dlaczego istnieje różnica między identyfikatorem klienta a identyfikatorem unikalnym?
Odpowiedz
(W uzupełnieniu do mojego oryginalnego odpowiedź powyżej)
Cóż, jak zapewne wiesz UniqueID jest używany z atrybutem name i ClientID z atrybutem id wytopionego tagu HTML. UniqueID używa dwukropka jako separatora. Z drugiej strony ClientId używa podkreślenia jako separatora, ponieważ dwukropek nie jest dozwolony w nazwach zmiennych JavaScript. Identyfikator klienta jest rzeczywiście unikatowy na stronie jako unikalny identyfikator, ale identyfikator klienta jest ukierunkowany na przetwarzanie po stronie klienta i unikalny identyfikator dla serwera (całkiem oczywiste), przy czym ten ostatni szczególnie kieruje się do danych zwrotnych i zdarzeń za pomocą złożonych formantów
Jednak Myślę, że niektóre rozumowanie może polegać na tym, że używanie znaku podkreślenia jako separatora w zwykłych identyfikatorach kontrolnych jest dość powszechnym zachowaniem, a zatem podkreślenia nie można używać w UniqueID jako separatora kontrolnego (jeśli teoretycznie myślimy, że zarządzamy jedną własnością), ponieważ nie można rozróżnić między kontrolami. Z drugiej strony, z tego samego rozumowania, nie można używać dwukropka w identyfikatorach kontrolnych, struktura strony nie pozwala na to, dzięki czemu upewnia się, że dwukropki nie mogą dostać się do identyfikatora klienta (było to spowodowane tym, że JavaScript go nie lubi) .
Z tych względów dwukropek jest całkiem dobrym wyborem do użycia w UniqueID, ponieważ metoda FindControl może używać go do nawigacji w drzewie kontrolnym i lokalizowania kontrolek (może łatwo podzielić identyfikator UniqueID).
thisUniqueID to nazwa kontrolki dołączona do wszystkich kontenerów nazw, uważa ją za w pełni kwalifikowaną nazwę kontrolną. this.ClientID jest wartością , która pojawi się w atrybucie id formantu, jest to tłumaczenie uniqueid, które jest tagiem id (hmm) zgodnym z html (prowadząc do podkreślenia , które nie są zgodne z html).
- 1. Kolumny SlickGrid - Różnica między identyfikatorem a polem
- 2. Praktyczna różnica między położeniem a identyfikatorem wiersza w onListItemClick()
- 3. Jaka jest różnica między identyfikatorem @id i @ +?
- 4. Jak sprawdzić, czy ciąg znaków jest unikalnym identyfikatorem?
- 5. Wymagane są białe spacje między jawnym IDI a identyfikatorem systemowym
- 6. Nie można utworzyć Braintree żeton klienta z identyfikatorem klienta
- 7. RedirectToAction() z identyfikatorem tabulatora
- 8. Jaka jest różnica między ograniczeniem unikatowym a unikalnym indeksem?
- 9. Czy "_ [....]" jest prawidłowym identyfikatorem?
- 10. Relacje między identyfikatorem pakietu w Info.plist i identyfikatorem aplikacji i iTunes Connect
- 11. Zamieszanie z identyfikatorem "użytkowania" w zamknięciach PHP
- 12. Jaka jest różnica między statycznym globalnym i niestatycznym identyfikatorem globalnym w C++?
- 13. Html.ActionLink z określonym identyfikatorem HTML?
- 14. Otwórz aplikację z identyfikatorem pakietu
- 15. Visual Studio - test z tym samym identyfikatorem już istnieje
- 16. MySQL wybierz * z wyraźnym identyfikatorem
- 17. Korzystanie z asp.net 4.5 OAuth w celu rejestracji google z identyfikatorem klienta i sekretem
- 18. Adres URL do użytkownika Twittera z identyfikatorem, a nie nazwą
- 19. Różnica między WebHooks ASP.NET a usługami sieciowymi?
- 20. Różnica między DataGrid a GridView w ASP.NET?
- 21. Różnica między identyfikatorem własnym na poziomie klasy i na poziomie członkowskim w F #?
- 22. Czy istnieje różnica między listą a krotką?
- 23. Czy istnieje różnica między SSLv3 a TLS1.0?
- 24. Różnica (jeśli istnieje) między `a 'w javascript
- 25. C++ różnica między 0 a 0.0
- 26. Dlaczego występuje różnica wydajności między LINQ (C#) a Seq (f #)
- 27. Co to jest @ przed zmienną/identyfikatorem w C#?
- 28. Jak usunąć interwał z nieznanym identyfikatorem?
- 29. Jaka jest różnica między identyfikatorem UDID urządzenia iPhone, urządzeniem iPhone i urządzeniem Token urządzenia iPhone?
- 30. Dlaczego występuje różnica między "importem" a "importowaniem *"?
Zatem, podkreślenia wiodące nie są (naprawdę) zgodne z html. Dlaczego więc nie używać znaków dolara? Dlaczego nie używać ID klienta po stronie serwera zamiast UniqueId? Obie są dokładnie takie same, jedyną różnicą jest użycie znaku dolara i podkreślenia. – Martijn
Identyfikator klienta ma na celu zwrócenie unikalnego identyfikatora kontrolki (jest to odpowiednik UniqueID, ale używa podkreślenia jako separatora kontrolnego), który może być używany w skryptach po stronie klienta. – JamesM
Myślę, że nie rozumiesz mojego punktu widzenia :) Javascript nie lubi znaków dolara i dlatego używa podkreśleń. Teraz to jasne. Moje następne pytanie brzmi: dlaczego nie używać podkreśleń po stronie serwera? Dlaczego więc nie używać ClientID na serwerze? Dlaczego musi istnieć osobna nieruchomość, która używa znaków dolara? Dlaczego podkreśleń nie można użyć na serwerze? – Martijn