无效的表达式术语'<'
<asp:TextBox ID="txtPassword" runat="server"
Width="180px" TextMode="Password"
OnTextChanged="CheckPasswordStrength(<%= txtPassword.ClientID.ToString() %>,<%= lblMessage.ClientID.ToString() %>)"/>
如果我像下面那样编写此代码,则会发生错误。发生了未处理的异常。服务器代码不能包含&lt; %%&gt;构建体
<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()+")");
}
答案 0 :(得分:4)
有一些事情正在发生..您不能在服务器端事件中包含参数,也不能在服务器控件中使用&lt;%=。
你想发射一个JavaScript事件吗?
如果您想触发JavaScript事件,请执行以下三项操作之一:
1)使用数据绑定表达式(&lt;%#Control.ClientID%&gt;) - 这要求在您的控件上调用生命周期DataBind()中的某个位置。
2)使用Control.Attributes.Add(“javascriptevent”,“DoStuff(x,y)”)在代码隐藏中分配事件
3)您可以使用&lt;%=%&gt;在您的客户端脚本中,例如
function MyJavaScriptEventHandler()
{
var textbox = document.getElementById('<%= MyASPTextBox.ClientID %>');
alert(textbox.value);
}
答案 1 :(得分:0)
我认为您不能在服务器事件中包含参数。您需要从Code-Behind引用这些控件。
答案 2 :(得分:0)
呀。服务器控件不能包含<%
(在服务器控制之后对这些标记进行评估 - 因此这些标记被视为服务器控件的一部分,并且无法解析)。
您可能希望在代码隐藏中添加ontextchanged属性。您也可以使用JavaScript。