解析服务器端标记时出错

Sha*_*pta 5 asp.net

无效的表达式术语'<'

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

如果我像下面这样编写这个代码然后发生错误一个未处理的异常已经发生.服务器标记不能包含<%%>结构

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

当我在.cs文件中使用此代码时,每件事情都正常.

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

zin*_*orp 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);
}
Run Code Online (Sandbox Code Playgroud)