2009-12-22 5 views
5

Ungültige Ausdruck Begriff ‚<‘Fehler bei der Lösung Server-Seite-Tag

<asp:TextBox ID="txtPassword" runat="server" 
      Width="180px" TextMode="Password" 
      OnTextChanged="CheckPasswordStrength(<%= txtPassword.ClientID.ToString() %>,<%= lblMessage.ClientID.ToString() %>)"/> 

Wenn ich diesen Code wie folgt dann Fehler schreibt tritt eine nicht behandelte Ausnahme aufgetreten ist. Server-Tags nicht <%% enthalten> Konstrukte

<asp:TextBox ID="txtPassword" runat="server" 
       Width="180px" TextMode="Password" 
       OnTextChanged="CheckPasswordStrength("<%= txtPassword.ClientID.ToString() %>","<%= lblMessage.ClientID.ToString() %>")"/> 

Wenn ich diesen Code verwenden bei CS-Datei dann alles funktioniert gut.

protected void Page_Load(object sender, EventArgs e) 
    { 
     txtPassword.Attributes.Add("onKeyUp", "PasswordCheck("+txtPassword.ClientID.ToString()+")"); 
     txtPrimaryEmail.Attributes.Add("onKeyUp", "EmailChecker("+txtPrimaryEmail.ClientID.ToString()+")"); 
    } 

Antwort

4

Es gibt ein paar Dinge mit diesem .. Sie können keine Parameter in Ihrem Server-Side-Event enthalten, und Sie können <% = in einem Server-Steuerelement nicht verwenden.

Wollen Sie ein JavaScript-Ereignis auslösen?

Wenn Sie bedeutet einen JavaScript-Ereignis ausgelöst, führen Sie einen der folgenden drei Schritte:

1) Verwenden Sie eine Datenbindung Ausdruck (<% # Control.ClientID%>) - Dies erfordert, dass irgendwo in der Lebens Zyklus DataBind() wird auf Ihrem Steuerelement aufgerufen.

2) Vergeben das Ereignis in der Code-behind, Control.Attributes.Add Verwendung ("javascriptevent", "DoStuff (x, y)")

3) Sie können <% =%> in Ihr Client-Skript, z

function MyJavaScriptEventHandler() 
{ 
    var textbox = document.getElementById('<%= MyASPTextBox.ClientID %>'); 
    alert(textbox.value); 
} 
+0

Ja, ich rufe eine JavaScript-Funktion an. –

+0

thx für Hilfe, 1 Frage. Wenn ich externe js Datei verwende, funktioniert diese Methode –

+0

Die dritte Methode funktioniert nicht für eine externe Datei. Der 1. und 2. würde. Ich würde empfehlen, die Vorgehensweise beizubehalten und sie der Attributsammlung in Code-Behind zuzuweisen. – zincorp

0

Ich glaube nicht, dass Sie Parameter in ein Server-Ereignis aufnehmen können. Sie müssen diese Steuerelemente aus dem Code-Behind beziehen.

0

Ja. Serversteuerelemente dürfen <% nicht enthalten (die Auswertung für diese Tags erfolgt nach den Serversteuerelementen - daher werden diese Tags als Teil des Serversteuerelements betrachtet und können nicht analysiert werden).

Sie könnten das Attribut ontextchanged in Ihrem Code-behind hinzufügen. Sie könnten auch JavaScript verwenden.