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

ASP.Net MVC中KnockoutJS+KOGrid超链接新标签打开失效问题求助

解决KOGrid单元格超链接添加target="_blank"后无法点击的问题

你遇到的核心问题是引号嵌套的语法冲突!当你在attr绑定里用双引号包裹_blank时,整个cellTemplate的字符串解析会被打断——Knockout会把这个双引号当成cellTemplate字符串的结束标记,导致后续的绑定逻辑失效。虽然链接看起来渲染出来了,但实际的绑定语法已经出错,所以点击没有反应。

这里有两种可靠的解决方法:

方法1:调整引号嵌套,用单引号包裹target值

把target:"_blank"改成target:'_blank',同时如果是在JavaScript字符串中定义cellTemplate,需要把单引号转义为\',避免和外层的字符串引号冲突:

cellTemplate: '<a data-bind="text:$parent.entity.sendPort, attr: { href: $parent.entity.sendPortLink, target: \'_blank\'}" ></a>'

这样Knockout就能正确解析整个attr绑定的对象,生成的<a>标签会同时包含正确的href和target="_blank"属性。

方法2:将target作为单独的Knockout绑定

Knockout支持直接绑定HTML属性,不需要把所有属性都塞进attr绑定里,这种写法更清晰,也能彻底避免引号问题:

cellTemplate: '<a data-bind="text:$parent.entity.sendPort, attr: { href: $parent.entity.sendPortLink }, target: \'_blank\'" ></a>'

验证方式

修改后,右键点击页面上的超链接选择“检查元素”,查看生成的HTML代码:如果<a>标签同时存在href="你的链接地址"和target="_blank",就说明绑定生效了,此时点击就能在新标签页打开页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:41:06