Thomas Bandt

Über mich | Kontakt | Archiv

ASP.NET: Keine Punkte für Control-IDs

Fügt man ein User- oder sonstiges Control dynamisch zur Laufzeit hinzu, sollte man diesem aus vielfältigen Gründen eine passende ID geben. Schon allein, um die Vorteile des ViewStates nutzen zu können. Allerdings muss man, wie mir heute klar wurde, sehr wohl aufpassen, wie man diese ID gestaltet.

Ich fand folgendes Format sehr schön:

Control x = new Control();
x.ID = "Master.Child";
Controls.Add(x);

Das funktionierte natürlich auch grundsätzlich. Bis ich die Website mal mit dem IE testete und mir plötzlich ein JS-Fehler um die Ohren flog. Nachdem der Fehler in einer von ASP.NET automatisch generierten Zeile JS-Code gemeldet wurde, standen mir die Fragezeichen erstmal ins Gesicht.

Dann wurde aber schnell klar, woran es lag. Ich hatte Validation-Controls verwendet, die sich innerhalb eines dieser dynamisch erzeugten Controls befanden. Deren ID bestand nun also aus dem des Parent-Controls und der eigenen. Und da ASP.NET für die Validation-Controls entsprechenden ScriptCode erzeugt und dabei die IDs als Variablennamen verwendet, wird's dann böse:

XYZ.Master.Child.ErrorMessages = "";

Mit den Punkten im Variablennamen hat JavaScript dann so seine Probleme. Also Punkte aus IDs wieder entfernt und durch Unterstriche ersetzt, und siehe da: alles wieder einwandfrei.

Merke: keine Punkte in IDs verwenden.



« Zurück  |  Weiter »