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

ASP.NET MVC如何实现重定向并在新窗口打开?

解决方案

服务器端的Context.Response.Redirect是基于HTTP协议的重定向指令,只能控制浏览器在当前窗口跳转,无法直接触发新窗口打开(这属于浏览器端行为,需前端代码实现)。你可以通过以下两种方式修改代码:

方案一:使用JavaScript直接打开新窗口

直接输出JavaScript代码,触发浏览器打开新窗口,同时可选择是否保留原页面:

@{
    Layout = "Master.cshtml";

    var links = Model.Value<IEnumerable<Link>>("linkTarget");

    if (links != null && links.Any())
    {
        var prettyLink = links.FirstOrDefault();
        <script>
            // 打开新窗口,_blank表示新标签页/窗口
            window.open('@prettyLink.Url', '_blank');
            // 若需要当前页面也跳转到目标地址,取消下面注释;不需要则删除该行
            // window.location.href = '@prettyLink.Url';
        </script>
    }
}

方案二:自动触发隐藏链接的点击

输出一个隐藏的<a>标签,通过JavaScript自动点击它,利用target="_blank"属性打开新窗口:

@{
    Layout = "Master.cshtml";

    var links = Model.Value<IEnumerable<Link>>("linkTarget");

    if (links != null && links.Any())
    {
        var prettyLink = links.FirstOrDefault();
        <a id="autoRedirectLink" href="@prettyLink.Url" target="_blank" style="display: none;"></a>
        <script>
            document.getElementById('autoRedirectLink').click();
        </script>
    }
}

注意事项

  • 部分浏览器会拦截window.open的自动触发行为(视为弹窗),如果遇到拦截问题,方案二的兼容性相对更好。
  • 若需要用户主动触发(比如点击按钮后打开新窗口),可以添加可见的按钮并绑定点击事件,避免被浏览器拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:42:10