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

MVC项目实现客户端按钮跳转至ViewBag指定第三方网站的方案

解决DevExpress按钮跳转至ViewBag指定第三方URL的问题

要实现点击按钮后在新标签页打开ViewBag.Enroller中的第三方URL,同时保持当前MVC站点正常运行,你只需要修改按钮的客户端点击事件即可,具体步骤如下:

修改后的完整代码

把你现有代码里的ClientSideEvents.Click部分替换成下面的实现:

<%if (ViewBag.Enroller != null) { %>
<td style="padding: 3px 0px 3px 6px;">
<% Html.DevExpress().Button(settings => {
settings.Name = "FingerEnrollerButton";
settings.Text = "Enrol Fingers";
settings.UseSubmitBehavior = false;
// 关键修改:用window.open在新标签页打开目标URL
settings.ClientSideEvents.Click = $"function(s, e) {{ window.open('{ViewBag.Enroller}', '_blank'); }}";
})
.Render(); %>
</td>
<% } %>

核心细节解释

  • 保持当前站点运行:使用window.open(..., '_blank')会在浏览器新标签页(或新窗口,取决于浏览器设置)加载第三方网站,你的MVC站点会留在原标签页继续运行,完全满足需求。
  • 动态获取URL:通过C#字符串插值把ViewBag.Enroller的URL直接嵌入到JavaScript函数中,这样就算第三方网站迁移服务器,只要后端更新ViewBag.Enroller的值,前端按钮会自动使用新地址,无需修改视图代码。
  • 安全提醒:如果ViewBag.Enroller的URL来自用户输入或外部数据源,一定要在后端做合法性校验(比如验证是否是HTTP/HTTPS协议的合法地址),防止XSS攻击等安全问题。

备选(当前窗口跳转,不推荐)

如果业务上确实需要在当前窗口打开第三方网站(会离开你的站点),可以改用下面的代码,但这不符合你"当前网站保持正常运行"的核心需求:

settings.ClientSideEvents.Click = $"function(s, e) {{ window.location.href = '{ViewBag.Enroller}'; }}";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:14:07