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

ASP.NET Core 6 MVC:window.print()后页面异常刷新丢失控制器数据问题

解决打印后页面自动刷新的问题

以下是针对你遇到的打印完成/取消后页面自动刷新、丢失ViewBag/TempData的解决建议:

  • 修正按钮的默认行为
    按钮默认类型是submit,如果它处在<form>标签内,点击时会触发表单提交,导致页面刷新。修改按钮代码,添加type="button"并阻止默认事件:

    <button type="button" class="button current" id="printButton" onClick="window.print(); return false;">
    Print
    </button>
    
  • 排查打印相关的全局事件监听
    检查页面中是否存在window.onbeforeprint或window.onafterprint的监听代码,这类事件如果被错误地绑定了页面刷新逻辑(比如location.reload()),会导致打印后自动刷新。确保这些事件回调里没有触发刷新的代码:

    // 错误示例,需要移除或修改
    // window.onafterprint = function() { location.reload(); }
    
  • 改用事件监听器替代内联onClick
    内联事件可能和页面其他脚本产生冲突,改用addEventListener绑定点击事件,更稳定地阻止默认行为:

    document.getElementById('printButton').addEventListener('click', function(e) {
      e.preventDefault(); // 阻止按钮的默认提交行为
      window.print();
    });
    

    同时记得给按钮加上type="button"属性。

  • 检查表单上下文
    如果按钮位于<form>标签内部,即使没指定action,浏览器也会默认提交当前页面。可以选择:

    • 将按钮移出<form>标签范围
    • 给表单设置明确的action(如果确实需要提交)
    • 在表单的onsubmit事件中返回false阻止默认提交

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 23:21:00