ASP.NET Core MVC搜索按钮点击后如何避免打开新窗口
解决ASP.NET Core MVC搜索结果在新标签页打开的问题
以下是几个排查和解决的关键点:
检查form标签的target属性
这是最常见的触发原因,若form标签设置了target="_blank",提交时会强制在新标签页加载结果。直接移除该属性即可,form默认会在当前窗口提交请求:<!-- 错误写法 --> <form asp-action="Index" method="get" target="_blank"> <!-- 表单内容 --> </form> <!-- 修正后 --> <form asp-action="Index" method="get"> <!-- 表单内容 --> </form>排查自定义JavaScript事件
检查页面中是否给搜索按钮或form绑定了强制打开新标签的JS逻辑,比如使用window.open()或动态设置form的target属性。例如:// 错误示例 document.getElementById('searchButton').addEventListener('click', function(e) { e.preventDefault(); const formData = new FormData(document.querySelector('form')); window.open(`/Home/Index?${new URLSearchParams(formData)}`, '_blank'); });解决方式:要么移除这段自定义事件,让form按默认逻辑提交;要么把
window.open的第二个参数改为'_self',或者直接用form.submit()替代window.open。检查按钮是否被锚标签包裹
如果搜索按钮被<a>标签嵌套,且a标签设置了target="_blank",也会触发新标签页打开。比如:<!-- 错误写法 --> <a href="/Home/Index" target="_blank"> <button type="submit" id="searchButton">Search</button> </a>修正方式:移除外层的a标签,确保按钮直接放在form内部作为submit控件。
如果以上方法都未解决问题,建议贴出你的Index视图页(Index.cshtml)和Home控制器(HomeController.cs)的完整代码,方便进一步排查。
内容的提问来源于stack exchange,提问作者mag232913
相关产品推荐
相关产品推荐

