asp.net - 解析服务器端标签时出错

标签 asp.net

无效的表达式术语“<”

<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/

相关文章:

c# - asp.net c# 中的输入框

c# - 当前上下文中不存在名称 'ClientScript'

c# - ASP.NET web 表单传递列表以查看页面并使用 html 控件显示

c# - 执行时 ASP.Net MVC "Could Not Load Type"

asp.net - 在 ASP.NET 中显示来自 IP 摄像机的视频流,而不使用 Flash

asp.net - Request.ServerVariables ["HTTP_X_FORWARDED_FOR"] 和 Request.Headers ["X-Forwarded-For"] 之间有区别吗?

asp.net - 如何从本地 ADFS 声明中获取用户组

jquery - 如何动态设置span标签的标题属性

asp.net - 如何让 Visual Studio 2017 评估版识别已安装的 .NET Framework 4.6.2?

javascript - SQL 结果到 JavaScript 变量