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

如何添加2sxc工具栏按钮:跳转指定页面且不新开窗口(带URL参数)

解决2sxc工具栏按钮自定义跳转(带参数、当前标签页、自定义样式)问题

核心问题原因

Info()方法默认会为链接添加target="_blank"属性,导致跳转新开窗口;同时你可以直接通过parameters参数传递URL参数,无需手动拼接链接字符串。

解决方案代码示例

方式1:直接通过Info()传递参数并禁用新窗口

@{
  var uiCode = new { 
    Icon = svgIcon, // 确保svgIcon是有效的SVG代码或图标类名
    Title = "Assign Users",
    Color = "purple"
  };
  int targetPageId = 176;
}

@foreach(var item in YourDataSource) {
  var tbEdit = Kit.Toolbar.Empty(item).Edit();

  <span class="mx-2"
    @((item.String("RuleType") == "users")
      ? tbEdit.Info(
          link: Link.To(pageId: targetPageId),
          parameters: new { assignId = item.Id },
          tweak: tb => tb.Ui(uiCode).Settings(new { OpenInNewWindow = false })
        )
      : tbEdit
    )
  >
    @item.String("Name") 
  </span>
}

方式2:预构建链接后禁用新窗口

如果需要提前构建完整链接,同样通过Settings禁用新窗口:

@{
  var uiCode = new { 
    Icon = svgIcon,
    Title = "Assign Users",
    Color = "purple"
  };
  int targetPageId = 176;
}

@foreach(var item in YourDataSource) {
  var tbEdit = Kit.Toolbar.Empty(item).Edit();
  // 用匿名对象传递参数,自动处理URL编码
  string linkTarget = Link.To(pageId: targetPageId, parameters: new { assignId = item.Id });

  <span class="mx-2"
    @((item.String("RuleType") == "users")
      ? tbEdit.Info(
          link: linkTarget,
          tweak: tb => tb.Ui(uiCode).Settings(new { OpenInNewWindow = false })
        )
      : tbEdit
    )
  >
    @item.String("Name") 
  </span>
}

关键说明

  1. 自定义样式生效:确保svgIcon是有效的SVG字符串(如<svg>...</svg>)或图标库类名(如fas fa-user),Color属性会直接应用到按钮的样式中。
  2. 参数传递规范:使用匿名对象传递parameters,2sxc会自动处理URL编码,避免手动拼接字符串导致的错误。
  3. 禁用新窗口:通过Settings(new { OpenInNewWindow = false })覆盖默认行为,让跳转在当前标签页执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:46:23