如何让ASP.NET的LinkButton在当前标签页打开指定链接?
看起来你遇到的核心问题是LinkButton默认会触发服务器回发,这会干扰你的客户端跳转逻辑,再加上之前用的window.open本身就是打开新窗口的方法,自然达不到预期效果。下面给你两种靠谱的解决方案:
方案1:纯客户端跳转(无回发,更高效)
直接修改OnClientClick,使用location.href实现当前页面跳转,并且一定要加上return false来阻止LinkButton的默认回发行为——这就是你之前用window.location没成功的关键!
修改后的前台代码:
<td> <asp:LinkButton ID="ApproveButton" runat="server" Text="Approval" CssClass="btn btn-primary btn-xs" OnClientClick="location.href='/Licence-Application/Applicant-Approval-Page'; return false;"/> </td>
为什么之前的尝试失败?
window.open:这个方法的设计目的就是打开新窗口/标签页,完全不符合你的需求;window.location/location.href:你之前可能没加return false,导致客户端跳转执行后,服务器回发立刻把页面拉回原页面,看起来像没生效;Response.Redirect:这是服务器端方法,只在客户端脚本里写它是无效的,必须在服务器端事件中使用。
方案2:服务器端处理后跳转(适合需要先执行后台逻辑的场景)
如果你的跳转需要先完成一些服务器端操作(比如更新数据库状态),可以去掉客户端脚本,改用LinkButton的服务器端点击事件:
前台代码
<td> <asp:LinkButton ID="ApproveButton" runat="server" Text="Approval" CssClass="btn btn-primary btn-xs" OnClick="ApproveButton_Click"/> </td>
后台代码(C#)
protected void ApproveButton_Click(object sender, EventArgs e) { // 在这里添加你的服务器端逻辑,比如审批状态更新等 // ... // 完成逻辑后跳转 Response.Redirect("/Licence-Application/Applicant-Approval-Page"); }
这个方案会触发一次页面回发,但能确保服务器端逻辑执行完成后再跳转。
内容的提问来源于stack exchange,提问作者ToluOwo
相关产品推荐
相关产品推荐

