2009-09-15 15 views
9

Ist es möglich, die ClientID von jedem asp.net-Server-Steuerelement festlegen? Wie kann ich das machen?Set ClientID in asp.net

+0

Warum müssen Sie das tun? –

+1

Erklären Sie, was Sie erreichen möchten, und dann können wir vielleicht eine Alternative vorschlagen. –

Antwort

19

Die gute Nachricht ist, dass in VS 2010.Net 4, haben Sie complete control over Client IDs!

Noch für die aktuellen Versionen von .Net, können Sie fällig. Ich nehme an, dass Sie die ID für JavaScript benötigen. Wenn ja, erhalten nur die ID wie folgt:

<script type="text/javascript"> 
    var myTextBox = $('#<%=TextBox1.ClientID%>'); 
</script> 
+2

+1 für ein Jedi und Lesen von ebattulga, "Get ClientID ich nicht festgelegt" –

+2

Vergessen Sie nicht, das Zeichen # vor dem <% = ausstehende möchten Sie das eigentliche DOM-Objekt und nicht nur die Text der ClientID des Controls. – KSwift87

+1

Thx @ Kswift87 das ist absolut richtig. Ich habe meine Antwort aktualisiert –

3

Das ist nicht möglich. Die ClientID wird von ASP.NET generiert. Von MSDN:

Der ClientID-Wert wird durch verketten den ID-Wert der Steuerung und der UniqueID Wert seiner Muttersteuerung erzeugt. Wenn der ID-Wert das Steuerelement nicht angegeben ist, wird ein automatisch generierter Wert verwendet.

1

Auch ich denke, dass es in Visual Studio 2008 nicht möglich ist. Da Control.ClientID hat Property einzige Methode

bearbeiten erhalten: Aber in Visual Studio 2010 (.NET 4.0) ist es möglich

+1

Wie ist es möglich? In VS2015 wird diese Methode nur noch erhalten. – FrenkyB

1

Dies ist eine ASP.NET 4.0-Funktion.

3

ich gegen tun dies Rat wäre, wenn Sie sicher sind Sie es tun wollen, aber es ist auch ein Weg. Sie können die ClientID-Eigenschaft innerhalb des Serversteuerelements überschreiben.

public override string ClientID 
{ 
    get { return "whatever"; } 
} 

Aber wie andere bemerkt haben, können Sie es von außen nicht tun.

1

ASP.NET 4 verfügt über ClientIDMode-Eigenschaft für jedes Steuerelement für das. Wenn Sie ClientID zu deaktivieren möchten vollständig können Sie this trick verwenden - es funktioniert für jede nicht-Postbacks Steuerung

0

Für VS 2010, .NET 4.0:

Wenn Sie gerade eingestellt versuchen, ctrl.ClientID="stringID" Sie erhalten Ein Fehler, der besagt, dass ClientID schreibgeschützt ist. Sie können den Wert von ClientID ClientIDMode mit Kontrolle - die den Algorithmus, mit dem definiert ClientID gesetzt:

ctrl.ID = "IDstring"; 
ctrl.ClientIDMode = ClientIDMode.Static; //ClientID value is set to the value of ID 

der HTML-Markup wird Steuerelements html mit der ID des Steuer markieren. Somit haben Sie einen gewissen Grad an Kontrolle über den Code-Behind.

Verwandte Themen