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

ASP.NET MVC如何从Controller实现点击链接后在新标签页打开目标URL

问题原因

你现有代码的核心问题是:@Html.ActionLink默认是在当前标签页发起请求,请求NewWindow接口后返回的JS脚本会直接覆盖当前页面的内容,即使能触发弹窗也会导致原页面被替换,不符合使用预期。

最简修复方案

你不需要在后端拼接JS脚本,直接通过以下两步修改即可实现需求:

  1. 修改cshtml页面的ActionLink方法,新增target="_blank"属性,让点击链接时先打开新标签页发起请求:
@*This is index.cshtml*@
@{    ViewBag.Title = "Index";}

<h2>Click on the link below</h2>
<!-- 最后一个参数指定a标签的target属性为_blank -->
@Html.ActionLink("GOOGLE", "NewWindow", "Home", null, new { target = "_blank" })
  1. 修改Controller中的NewWindow方法,直接返回重定向结果即可,后端还可以在重定向之前执行你需要的业务逻辑(比如权限校验、行为埋点等):
public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult NewWindow()
    {
        // 此处可添加自定义业务逻辑
        return Redirect("https://www.google.com/");
    }
}

其他说明

如果你的场景要求不能在a标签上提前写target="_blank",必须由原页面触发新标签打开,也可以给ActionLink绑定点击事件,阻止默认跳转行为,异步请求后端拿到目标地址后调用window.open打开新标签即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:42:01