如何在ASP.NET LinkButton的OnClientClick事件函数内Eval取值并阻止页面刷新
解决方案
问题原因
原有代码的核心问题是:当绑定的Path为字符串类型时,生成的前端JavaScript代码不会自动给参数加引号,会触发JS语法错误,导致ShowModal和后续的return false都无法正常执行。
正确实现代码
写法1:使用HTML实体转义单引号(兼容性最优,推荐)
<asp:LinkButton runat="server" ID="lnkFile" OnClientClick='<%# Eval("Path", "ShowModal('{0}'); return false;") %>' CssClass="card-body"> </asp:LinkButton>
这里的'是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
相关产品推荐
相关产品推荐

