Mit .ClientID rufen zu erhalten .ID für eine Web-Steuerung zu füllen
-
05-07-2019 - |
Frage
Ich mache eine Form Rahmen für ein Projekt, und habe festgestellt, dass bei dem Versuch, auf die AssociatedControlID Eigenschaft des asp programmatisch festgelegt: Label auf seinen zugeordneten TextBox, ich habe zu nennen ClientID bekommen ID zu füllen (nicht null sein).
Während des Debuggens diese Verwendung des Zwischen Fenster zeigt das Problem:
_inputTextBox.ID
null
_inputTextBox.ClientID
"ctl00_MainContent_ctl01"
_inputTextBox.ID
"ctl01"
(Wert vorhanden 2. Mal ist ID genannt wird)
Ich gründe _inputLabel.AssociatedControlID = _inputTextBox.ID in einer überschriebenen Createchildcontrols () , und haben versucht, in Render () mein WebControl.
Ich habe versucht, das Laden ClientID in eine nicht verwendete Variable TEMP ersten, und es funktioniert, zum Beispiel:
var x = _inputTextBox.ClientID;
_inputLabel.AssociatedControlID = _inputTextBox.ID;
Gibt: (richtig)
<label for="ctl00_MainContent_ctl01">Name of customer</label>
<input type="text" id="ctl00_MainContent_ctl01" name="ctl00$MainContent$ctl01"/>
Statt: (falsche)
<span>Name of customer</span>
<input type="text" id="ctl00_MainContent_ctl01" name="ctl00$MainContent$ctl01"/>
Meine Frage ist - Warum muss ich diese Hack ausführen müssen? Gibt es eine bessere Art und Weise für ID zuverlässig gefüllt werden?
Danke.
Lösung
Das Beste, was zu tun ist, die ID auf der Steuerung selbst einstellen. Wenn Sie dies nicht tun wird man automatisch erzeugt werden, wenn die EnsureID
Methode geschützt Kontrollen genannt wird.
Diese Methode wird zu verschiedenen Zeiten automatisch aufgerufen, einschließlich, aber nicht beschränkt auf, wenn der Getter für ClientID
zugegriffen wird.
Sie sollten sich auch bewusst sein, dass, wenn Sie dynamisch Kontrollen manipuliert werden dann ist es möglich, dass die dynamisch generierten IDs basierend auf der Reihenfolge variieren können, dass Sie die Steuerelemente zur Seite hinzufügen.
Auch wenn Sie nicht dynamisch sind die Steuerelemente die dynamisch generierte ID erstellen, können variieren, wenn Sie die ID-Generierung erzwingen (durch den Zugriff auf ClientID
) in einer anderen Reihenfolge.
Andere Tipps
Die ID dynamisch erstellten Steuerelemente ist null, sofern nicht ausdrücklich, bis die Render definierte Methode aufgerufen wird.