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

ASP.NET WebForm ListView传递字母数字item_id至JS函数报错

问题解决方法

错误根源清晰:当item_id是字母数字组合时,渲染后的onclick代码会生成AddToCart(pf10001),JavaScript会把pf10001识别为变量名而非字符串,而该变量未定义,因此抛出ReferenceError。数值类型能正常运行是因为JS直接将数字识别为合法值。

最简易的修复方式是给绑定的item_id加上引号,让JS将其当作字符串参数处理,具体修改方案如下:

方案1:直接拼接引号(基础版)

修改ListView ItemTemplate中的HTML代码,在DataBinder.Eval前后添加转义的双引号:

<a href="#" class="btn btn-sm btn-success" onclick='<%# "javascript:AddToCart(\"" + DataBinder.Eval(Container.DataItem, "item_id") + "\");return false;" %>'>Add to Cart</a>

渲染后生成的代码会是AddToCart("pf10001"),此时JS会正确将pf10001作为字符串传递。

方案2:使用JavaScript字符串编码(安全版)

如果item_id可能包含特殊字符(比如引号、换行),建议用HttpUtility.JavaScriptStringEncode处理,避免XSS或语法错误:

<a href="#" class="btn btn-sm btn-success" onclick='<%# "javascript:AddToCart(\"" + HttpUtility.JavaScriptStringEncode(DataBinder.Eval(Container.DataItem, "item_id").ToString()) + "\");return false;" %>'>Add to Cart</a>

该方法会自动转义字符串中的特殊字符,确保参数传递的安全性和正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:58:21