无效的表达式术语“<”
<asp:TextBox ID="txtPassword" runat="server"
Width="180px" TextMode="Password"
OnTextChanged="CheckPasswordStrength(<%= txtPassword.ClientID.ToString() %>,<%= lblMessage.ClientID.ToString() %>)"/>
如果我像下面这样编写此代码,则会发生错误发生未处理的异常。服务器标签不能包含 <% %> 结构
<asp:TextBox ID="txtPassword" runat="server"
Width="180px" TextMode="Password"
OnTextChanged="CheckPasswordStrength("<%= txtPassword.ClientID.ToString() %>","<%= lblMessage.ClientID.ToString() %>")"/>
当我在 .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()+")");
}
最佳答案
这有几件事发生。您不能在服务器端事件中包含参数,也不能在服务器控件中使用 <%= 。
您是要触发 JavaScript 事件吗?
如果您打算触发 JavaScript 事件,请执行以下三件事之一:
1) 使用数据绑定(bind)表达式 (<%# Control.ClientID %>) - 这要求在您的控件上调用生命周期 DataBind() 中的某个位置。
2) 在代码隐藏中分配事件,使用 Control.Attributes.Add("javascriptevent", "DoStuff(x, y)")
3) 您可以在客户端脚本中使用 <%= %>,例如
function MyJavaScriptEventHandler()
{
var textbox = document.getElementById('<%= MyASPTextBox.ClientID %>');
alert(textbox.value);
}
关于asp.net - 解析服务器端标签时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947777/