2017-03-23 1 views
1

Beide Kontrollen arbeiten:Hat die Abfrage der ClientID über die ID einen Vorteil?

If cntrl.ID.ToString().Contains("ckbx") Then 
If cntrl.ClientID.ToString().Contains("ckbx") Then 

Gibt es einen Vorteil ClientID über ID abfragen?

BTW, ich direkt zuweisen ID, aber nicht zu ClientID (wenn das überhaupt möglich ist). Dieser Code ist:

Dim chk = New CheckBox() 
chk.ID = "ckbx" + i.ToString() 
chk.Checked = True 
formCustCatMaint.Controls.Add(chk) 
+1

Sie sind beide schlechte Code Gerüche. Wenn Sie Dinge basierend auf magischen Zeichenfolgen abgleichen müssen, müssen Sie wahrscheinlich Ihr Design überdenken. – mason

+0

Vielleicht haben Sie Recht, aber das Testen für die Vorversion überprüft, dass nur die Kontrollkästchen, die ich dynamisch erzeuge und die Vorvalidierung angeben, gefunden und bearbeitet werden. –

+0

Sie sagen also beide arbeiten? Und bei Ihren Tests haben beide dasselbe gemacht? Warum sollte man dann eine offene Frage stellen, die hauptsächlich offen ist? – mason

Antwort

2

Gibt es einen Vorteil ClientID über ID abfragen?

Kurze Antwort ist es auf useage hängt ...

ID verwendet wird, um eine Kennung zu einem Server-Steuerelement zuweisen, die später verwendet werden können, um diese Steuerung zugreifen. Sie können entweder das im Code-Behind generierte Feld verwenden oder den Wert der ID-Eigenschaft an die FindControl-Methode übergeben. Es gibt jedoch einen Haken; Die ID -Eigenschaft ist nur innerhalb des aktuellen Containers eindeutig: Seite, Benutzersteuerung, Steuerelement mit Elementvorlage usw. Wenn ein Serversteuerelement in der Elementvorlage eines anderen Steuerelements (Repeater, DataGrid) oder Benutzersteuerelements definiert ist, lautet seine ID-Eigenschaft nein länger einzigartig.

ClientID wird nach den gleichen Regeln generiert (die ID des Steuerelements mit der ID seines NamingContainer). Der einzige Unterschied ist das Trennzeichen - für die ClientID ist es das "_" (Unterstrich). Die ClientID-Eigenschaft ist unter allen in einer ASP.NET-Seite definierten Steuerelementen global eindeutig.

Auch erwähnenswert, dass die Werte der ID oder ClientID identisch sind, wenn das Steuerelement auf der Masterseite definiert ist. Dies kann jedoch zu unerwarteten Fehlern führen. Wenn die ID des Steuerelements innerhalb der JavaScript-Anweisung fest codiert ist, funktioniert der Code nur, wenn das Steuerelement auf der Seite oder der Masterseite definiert ist. Das Verschieben des Steuerelements und des Codes JavaScript in ein Benutzersteuerelement mit der ID "UserControl1" schlägt zur Laufzeit fehl.

Sie können read more dort oder here.

Verwandte Themen