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

如何在ASP.NET LinkButton的OnClientClick事件函数内Eval取值并阻止页面刷新

解决方案

问题原因

原有代码的核心问题是:当绑定的Path为字符串类型时,生成的前端JavaScript代码不会自动给参数加引号,会触发JS语法错误,导致ShowModal和后续的return false都无法正常执行。

正确实现代码

写法1:使用HTML实体转义单引号(兼容性最优,推荐)

<asp:LinkButton runat="server" ID="lnkFile" 
    OnClientClick='<%# Eval("Path", "ShowModal(&#39;{0}&#39;); return false;") %>' 
    CssClass="card-body">
</asp:LinkButton>

这里的&#39;是HTML单引号的实体编码,渲染到前端后会自动转为普通单引号,包裹Path的字符串值,符合JS语法要求。

写法2:使用string.Format转义双引号

<asp:LinkButton runat="server" ID="lnkFile" 
    OnClientClick='<%# string.Format("ShowModal(\"{0}\"); return false;", Eval("Path")) %>' 
    CssClass="card-body">
</asp:LinkButton>

注意事项

  • 功能上线前可以右键查看页面源码,确认生成的OnClientClick属性格式为ShowModal('实际路径值'); return false;即为配置正确。
  • 如果Path字段可能包含单引号,需要提前在绑定数据源时将单引号替换为\',避免JS字符串截断报错。
  • 只要return false在OnClientClick的JS逻辑末尾正常执行,就会阻止LinkButton的默认回发行为,页面不会刷新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:24:03