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

ASP.NET MVC中href链接跳转被数据库登录中断的解决问询

问题:ASP.NET MVC链接登录后无法跳转到指定地址

我使用ASP.NET MVC开发,代码部署在Index.cshtml视图(后续也会应用到详情视图)。现有一个href链接:用户已登录目标在线数据库时,可正常跳转至指定地址;但用户未登录时,点击链接会跳转至登录页,登录完成后却导向数据库首页,而非链接指定的目标地址。想确认是否有解决办法,还是受我们无法控制的数据库设置影响?

相关代码如下:

@foreach (var item in Model) 
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ProjectID)
        </td>
        <td>
            <a href="@string.Format("https://www.xyz.co.uk/#/project/{0}/Index", item.Reference)" target="_blank">Edge </a>
        </td>
       ....
    </tr>
}

解决思路

1. 确认目标系统是否支持登录跳转参数

多数身份验证系统支持通过returnUrl(或类似命名的参数)指定登录后的跳转地址,你可以:

  • 查询目标数据库系统的文档或联系其技术支持,确认是否支持这类参数传递。
  • 如果支持,修改链接构造逻辑,将目标路径编码后作为参数附加到登录页URL中。例如:
    <a href="@string.Format("https://www.xyz.co.uk/login?returnUrl=%23%2Fproject%2F{0}%2FIndex", item.Reference)" target="_blank">Edge </a>
    
    注意:必须对returnUrl的值做URL编码(比如#转%23、/转%2F),避免参数被截断或解析错误。
  • 如果目标系统不支持该参数,那确实是对方系统的设置限制,无法通过前端代码解决。

2. 排查锚点(#)的影响

你的链接包含锚点路径(#/project/{0}/Index),部分系统的登录跳转逻辑会忽略锚点部分,只保留域名和路径。这种情况下:

  • 联系目标数据库的技术支持,确认是否支持将锚点作为跳转目标的一部分。
  • 若支持,确保returnUrl参数包含完整的锚点内容且编码正确。

3. 后端中转跳转(备选方案)

如果前端直接传递参数无效,可以在ASP.NET MVC后端创建中转Action:

  1. 后端Action接收项目Reference参数,生成包含returnUrl的目标系统完整跳转URL。
  2. 前端链接指向该后端Action,由后端完成跳转。

示例Controller代码:

public ActionResult RedirectToEdge(string reference)
{
    var targetPath = Uri.EscapeDataString($"#/project/{reference}/Index");
    var loginUrl = $"https://www.xyz.co.uk/login?returnUrl={targetPath}";
    return Redirect(loginUrl);
}

前端链接修改为:

<a href="@Url.Action("RedirectToEdge", "YourController", new { reference = item.Reference })" target="_blank">Edge </a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:18:12