Laden...

ID für JavaScript bei runat="server"

Erstellt von Golo Roden vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.413 Views
Golo Roden Themenstarter:in
4.207 Beiträge seit 2003
vor 18 Jahren
ID für JavaScript bei runat="server"

Hallo,

wenn ich einem Label, das mit runat="server" versehen ist, eine ID zuweise, funktioniert dies in ASP.NET, aber in JavaScript bleibt die ID nicht erhalten. Wie kann ich einem Control eine ID zuweisen, die so wohl in ASP.NET wie auch in JS funktioniert?

Viele Grüße,

Golo

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

P
554 Beiträge seit 2005
vor 18 Jahren

doch, das geht sehr wohl.

poste mal ein wenig Quellcode.

Achtung! - Hinter dir ist ein dreiköpfiger Affe!

Golo Roden Themenstarter:in
4.207 Beiträge seit 2003
vor 18 Jahren

Das Control:

<asp:TextBox ID="RackDetailsName" runat="server" />

Das JavaScript:

document.getElementById("RackDetailsName").value = rack.Name;

Die ID wird zur Laufzeit aber zu ctl00_Content_RackDetailsName.

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

P
554 Beiträge seit 2005
vor 18 Jahren

jo, wenn du es so:

document.getElementById("ctl00_Content_RackDetailsName").value = rack.Name;

schreibst, geht es auch.

bin jetzt allerdings bisschen verwundert, wenn man ein normales Html-Element benutzt und das auf dem Server laufen lässt, kann man es auch mit dem ganz normalen Namen(ID) im JS und ASP.NET ansprechen.

Achtung! - Hinter dir ist ein dreiköpfiger Affe!

Golo Roden Themenstarter:in
4.207 Beiträge seit 2003
vor 18 Jahren

Na das ist mir auch klar, nur wer garantiert mir denn, dass in jedem Fall speziell DIESES Präfix von ASP.NET verwendet wird?

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

29 Beiträge seit 2005
vor 18 Jahren

das Framework!

Golo Roden Themenstarter:in
4.207 Beiträge seit 2003
vor 18 Jahren

Und wo steht das spezifiziert, wie dieses Präfix vergeben wird?

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

C
1.215 Beiträge seit 2004
vor 18 Jahren

Dafür musst du immer das Property ClientID verwenden, denn das gibt stets die zusammengesetzte ID wider.
😉

Grüsse

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo Der Eisbär,

manchmal kann man das auch umgehen, indem man zusätzlich das Attribut 'Name' vergibt, das von ASP.NET zunächst nicht zur Identifikation dient. Aber ASP.NET kann selbstverständlich auch hierauf zugreifen, und JavaScript hat eine eindeutige Identifizierungsmöglichkeit...

Ob das 'Name'-Attribut bei Labels unterstützt wird, kann ich hier nicht aus dem Stehgreif sagen.

Gruß,
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

P
554 Beiträge seit 2005
vor 18 Jahren

das Name Attribut ist aber nicht mehr valid!

Achtung! - Hinter dir ist ein dreiköpfiger Affe!

C
1.215 Beiträge seit 2004
vor 18 Jahren

Original von Powerslave
das Name Attribut ist aber nicht mehr valid!

Wo hast Du denn diese Info her?!
😉

Natürlich ist das name-Attribut noch valid. Es soll nur nicht als ID missbraucht werden, was aber gerne getan wird.
Das name-Attr. darf verwendet werden von <form>, <img>, <iframe>, <embed>, <input>, <select>...
Ohne Angabe des name-Attr. würden z. B. keine gesendeten Formulardaten am Server erkannt werden.
Darüberhinaus kann ein- und dasselbe name-Attr. öfter vorkommen, was beim id-Attr. nicht der Fall ist.

Grüsse

P
554 Beiträge seit 2005
vor 18 Jahren

Schon, aber nicht bei ASP.NET Elementen so weit ich weiß, ach ich weiß nix 😁

Achtung! - Hinter dir ist ein dreiköpfiger Affe!

C
1.215 Beiträge seit 2004
vor 18 Jahren

Du solltest das name-Attr. bei Websteuerelementen nicht setzen, da ASP.NET das selber vornimmt. Wahrscheinlich kannst Du das auch gar nicht, da ASP.NET es beim Rendern mit seinem eigenen Wert überschreibt.
Im normalen HTML-Kontext kannst Du es aber wie gewohnt verwenden.

Grüsse