Wie übermittle ich die tatsächliche Client-ID eines Serversteuerelements an eine JavaScript-Funktion?

8

Ich habe das folgende Textfeld Server-Steuerelement in meiner Webseite:

%Vor%

Wenn die Seite gerendert wird, enthält sie Folgendes:

%Vor%

Ich versuche, die Client-ID des Textfelds als zweiten Parameter dieser JavaScript-Funktion zu übergeben:

%Vor%

Wie bekomme ich es dazu, auf dem Server die Kontrolle der texbox auszuwerten und diese literale Zeichenfolge an die Javascript-Funktion zu übergeben?

    
ChadD 01.09.2009, 12:54
quelle

6 Antworten

14

Setzen Sie <%= txtZip.ClientId %> zwischen einfache Anführungszeichen, um so zu sein:

%Vor%

Aktualisieren

Bitte überprüfen Sie diesen Artikel: Ссылка

Auch ich mag diese Antwort

    
Amr Elgarhy 01.09.2009, 12:59
quelle
7

Es gibt viele Möglichkeiten, dies zu beheben, aber ich finde die einfachste Sache im allgemeinen Fall ist die Verwendung des ScriptManager, um ein separates Skript oben auf meinen Seiten speziell für den Zweck des Hinzufügens von ClientIDs aufzunehmen:

%Vor%

Rufen Sie das im PreRender-Ereignis (irgendwo nach der Datenbindung) auf. Dann, wenn Sie ein wenig Phantasie wollen, können Sie leicht die Methode anpassen, um ein IEnumerable oder params Array von Steuerelementen zu akzeptieren, und lassen Sie es die Steuerelementnamen für die Javascript-Variablennamen verwenden. Manchmal mache ich das, aber es ist normalerweise einfach genug, um einfach das, was ich brauche, direkt zu der Methode hinzuzufügen.

Auch das ist etwas peinlich, weil Kontrollen, die in anderen Benennungscontainern (wie Grids) enthalten sind, immer noch Probleme verursachen können. Ich würde mir wünschen, dass das ASP.Net-Team bald so etwas direkt in das Framework einbauen könnte, aber ich erwarte es nicht wirklich: (

    
Joel Coehoorn 01.09.2009 13:06
quelle
6
%Vor%     
andres descalzo 01.09.2009 13:08
quelle
1

Das gleiche Problem ist aufgetreten, konnte nicht mit einer der oben angegebenen Methoden behoben werden. Also fügte ich ein Zwischenprodukt JS hinzugefügt einen Aufruf an die tatsächliche JS-Funktion basierend auf übergebenen Wert. Ich kenne seine eine lahme Methode, um es zu lösen, aber es funktionierte immer noch für mich.

Vorher:

%Vor%

Nach

%Vor%     
Knightshade 05.12.2009 10:29
quelle
1

Sie können das Ereignis onchange aus dem Code hinter der Methode page_load hinzufügen.

%Vor%

Wenn Sie mehr als ein Steuerelement zusammen mit ihrer ClientID übergeben möchten, ist dieser Ansatz eine gute Wahl.

Ich hoffe, das wird das Problem lösen.

    
Mourya 29.01.2012 18:40
quelle
0

Ich habe das gleiche Problem mit einem <asp:CheckBox...

gelöst

Bei Verwendung von <%= TargetControl.ClientID %> (ohne umgebende einfache Anführungszeichen) gibt ASP.NET '&lt;%= TargetControl.ClientID %>' zurück, und die zugehörige JavaScript-Funktion wird nicht aufgerufen.

Bei der Verwendung von '<%= TargetControl.ClientID %>' (mit umgebenden Single-Anführungszeichen) wird der Ausdruck von ASP.NET nicht ausgewertet und in den einfachen Anführungszeichen genau gleich dargestellt.

Also entscheide ich mich, stattdessen mit einem Input (Checkbox) HTLM-Steuerelement zu versuchen, indem ich das folgende Markup verwende

%Vor%

und es hat funktioniert !!!

Ich hoffe, es hilft.

    
Agrock 28.09.2009 02:46
quelle

Tags und Links