13 Stimmen

Wie bestimmte ID für Server-Steuerelemente in einem ASP.NET-Web-Formular, das eine MasterPage verwendet festlegen?

Ist es möglich, eine bestimmte ID für ein ASP.NET-Server-Steuerelement festzulegen? Jedes Mal, wenn ich eine ID zuweise und das Webformular ausführe, ändert sich die ID.

Zum Beispiel:

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

Das heißt übersetzt so viel wie:

<input id="ct100_ContentPlaceHolder1_txtName" type="text" />

Ich denke, dies ist tun, um mich mit Master-Seiten, aber wenn ja, wie kann ich sicher sein, dass ein Steuerelement eine bestimmte ID (für Javascript-Zwecke) haben wird. Ich habe die automatisch generierte ID in meinem Javascript platziert und es funktioniert, aber ich würde es vorziehen, die IDs zu verwenden, die ich ihnen ursprünglich zugewiesen habe. Ist dies möglich?

(Dies gilt für Version:ASP.NET 3.5)

29voto

M4N Punkte 92235

Ab .NET 4 haben Sie mehr Kontrolle darüber, wie die clientseitigen IDs aussehen ( siehe diesen Beitrag für Details ).

Um eine bestimmte client-seitige ID zu erzwingen, müssen Sie den ClientIDMode auf statisch setzen. Das Folgende rendert eine <input> Element mit id="txtName" :

<asp:TextBox ID="txtName" ClientIDMode="static" runat="server"></asp:TextBox>

Wenn Sie dies tun, müssen Sie jedoch sicherstellen, dass Sie nicht zwei Steuerelemente mit identischen clientseitigen IDs haben. In dem oben verlinkten Artikel finden Sie weitere Optionen.

5voto

Dustin Laine Punkte 36921

Dies ist die Art und Weise Web-Steuerelemente IDs sind in .NET vor Version 4.0. Version 4.0 führt Client-IDs ein, über die Sie folgendes lesen können aquí .

Sie können etwas wie dieses in Ihrem JS verwenden:

var something = '<%= txtName.ClientID %>';

2voto

BC. Punkte 23018

Sie können die Steuerung.ClientID Eigenschaft in Ihrem Codebehind, um die tatsächliche ID zu erhalten, nachdem sie dem Kontrollbaum hinzugefügt wurde.

Super ärgerliche Entscheidung der asp.net Webforms-Leute.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X