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

如何在C# ASP.NET Core MVC中在新标签页打开URL

解决方案:无需ScriptManager实现后台触发新标签页打开URL

核心问题说明

你当前代码里的Response.Redirect(xURL)会直接让服务器跳转当前页面,导致之前注册的脚本根本没有机会在前端执行,这是关键矛盾点,必须移除这行代码。另外,因为无法引用System.Web.Extensions,可以用原生的Page.ClientScript来注册前端脚本,或者直接输出脚本内容。


方法1:使用Page.ClientScript注册启动脚本

这是替代ScriptManager的原生方案,无需额外引用,代码如下:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string xURL = "https://www.google.com"; // 必须加完整协议,避免相对路径问题
        // 注册前端脚本,页面加载完成后执行window.open
        Page.ClientScript.RegisterStartupScript(
            this.GetType(),
            "OpenNewWindow",
            $"window.open('{xURL}');",
            true
        );
    }
}

方法2:直接输出脚本到页面

如果Page.ClientScript有兼容问题,可以直接在后台输出脚本标签:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string xURL = "https://www.google.com";
        // 直接写入脚本到响应流
        Response.Write($"<script type='text/javascript'>window.open('{xURL}');</script>");
    }
}

重要注意事项

  • 必须移除Response.Redirect:这行代码会终止当前页面渲染,脚本无法被前端执行,一定要删除。
  • 添加完整URL协议:给URL加上http://或https://,否则浏览器会把它当作当前站点的相对路径处理,导致打开错误页面。
  • 浏览器弹窗拦截提示:页面加载时自动触发的弹窗大概率会被浏览器拦截,建议在页面上添加提示引导用户允许站点弹窗权限;如果业务允许,尽量改为用户主动交互(比如点击按钮)触发跳转,避免被拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:19:59