You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET中用服务器标签在TextBox onblur传HiddenField值报错

问题分析与解决方案

错误原因在于服务器标签的格式和内联事件的引号嵌套处理不当,同时数据绑定表达式的使用场景也需要匹配。以下是两种可行的修复方案:


方案1:直接输出服务器端值(非数据绑定场景)

如果不需要数据绑定逻辑,使用<%= %>直接输出HiddenField的值即可,这是最简洁的方式:

<asp:HiddenField ID="hdnMaxLen" runat="server" Value="10" />

<asp:TextBox ID="txtTargetForBelow6" runat="server" MaxLength="10"
    onkeyup="return FnAlert(this, <%= hdnMaxLen.Value %>);"
    CssClass="form-control" AutoCompleteType="None" autocomplete="off"></asp:TextBox>
  • 说明:<%= %>会直接在页面渲染时输出服务器端控件的Value值,因为这里是数字类型,无需额外添加引号;如果是字符串参数,需要改为'<%%= hdnMaxLen.Value %>'用单引号包裹。

方案2:使用数据绑定表达式(绑定场景)

如果你的控件处于数据绑定容器(如GridView、Repeater)内,必须使用<%# %>,则需要修正引号嵌套并确保执行数据绑定:

前端代码

<asp:HiddenField ID="hdnMaxLen" runat="server" Value="10" />

<asp:TextBox ID="txtTargetForBelow6" runat="server" MaxLength="10"
    onkeyup='<%# "return FnAlert(this, " + hdnMaxLen.Value + ");" %>'
    CssClass="form-control" AutoCompleteType="None" autocomplete="off"></asp:TextBox>

后台代码(确保执行数据绑定)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // 可以绑定单个控件或整个页面
        txtTargetForBelow6.DataBind();
        // Page.DataBind();
    }
}
  • 说明:将onkeyup的属性值用单引号包裹,内部通过<%# %>拼接完整的JavaScript代码字符串,避免引号冲突,同时必须调用DataBind()触发数据绑定表达式的解析。

内容的提问来源于stack exchange,提问作者Hisanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:45:16