2009-12-22 11 views
5

término expresión no válida '<'error en la resolución de la etiqueta del lado del servidor

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

Si me escribe este código como el siguiente error se produce entonces una excepción no controlada se ha producido. etiquetas servidor no puede contener <%%> construye

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

Cuando yo estoy usando el código en el archivo .cs bien entonces cada cosa está funcionando.

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

Respuesta

4

Hay un par de cosas que están pasando con esto .. No puede incluir parámetros en su evento del lado del servidor, y no puede usar <% = en un control de servidor.

¿Quiere despedir a un evento de JavaScript?

Si está significando para disparar un evento de JavaScript, realice una de tres cosas:

1) el uso de una expresión de enlace de datos (<% # Control.ClientID%>) - Esto requiere que en algún lugar dentro de la vida ciclo DataBind() se invoca en su control.

2) Asignar el evento en el código subyacente, utilizando Control.Attributes.Add ("javascriptevent", "DoStuff (x, y)")

3) Se puede utilizar <% =%> en su script de cliente, por ejemplo

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

sí, estoy llamando a una función de JavaScript. –

+0

thx para ayuda, 1 pregunta. Si estoy usando un archivo js externo, este método funciona –

+0

El tercer método no funcionará para un archivo externo. El primero y el segundo lo harían. Recomiendo seguir con cómo lo está haciendo ahora, asignándolo a la colección de atributos en código subyacente. – zincorp

0

No creo que pueda incluir parámetros en un Evento de servidor. Tendrá que hacer referencia a esos controles desde el código subyacente.

0

Sí. Los controles del servidor no pueden contener <% (la evaluación de esas etiquetas se produce después de que el servidor controla, por lo que esas etiquetas se consideran parte del control del servidor y no se analizan).

Es posible que desee agregar el atributo ontextchanged en su código subyacente. También puedes usar JavaScript.

Cuestiones relacionadas