2009-12-22 89 views
5

无效表达术语“<”错误解析服务器侧标签

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

如果我喜欢以下则错误写入此代码未处理的异常已发生。服务器标记不能包含<%%>当我米使用此代码的.cs文件,然后每一件事工作正常构造

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

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

回答

4

有一些事情正在进行中..您不能在服务器端事件中包含参数,并且您不能在服务器控件中使用<%=。

您是否想要激发JavaScript事件?

如果你意思是火一个JavaScript事件,做的三两件事之一:

1)使用数据绑定表达式(<%#Control.ClientID%>) - 这需要在某处内生命循环DataBind()正在您的控件上调用。

2)在分配事件代码隐藏,使用Control.Attributes.Add( “javascriptevent”, “DoStuff(X,Y)”)

3)可以使用<%=%>在你的客户端脚本,例如

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

是的,我正在调用一个javascript函数。 – 2009-12-22 17:17:48

+0

thx求助,1个问题。如果我使用外部js文件,那么这个方法是否工作 – 2009-12-22 17:26:38

+0

第三种方法不适用于外部文件。第一和第二会。我建议坚持现在的做法,将其分配到代码隐藏的属性集合中。 – zincorp 2009-12-22 17:27:40

0

我不认为你可以在服务器事件中包含参数。您需要从代码隐藏中引用这些控件。

0

是的。服务器控件不能包含<%(这些标记的评估发生在服务器控件之后 - 所以这些标记被认为是服务器控件的一部分,并且无法解析)。

您可能希望在代码隐藏中添加ontextchanged属性。你也可以使用JavaScript。

相关问题