解析服务器端标记时出错

时间:2009-12-22 17:08:56

标签: asp.net

无效的表达式术语'<'

<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()+")");
    }

3 个答案:

答案 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。