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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top