stevenjin 2024-07-06 14:12 采纳率: 97.3%
浏览 3
已结题

asp.net core mvc 防止刷新重新上传

1.asp.net core mvc 上传后,点击网页刷新按钮会重新上传
2.需求:在执行完成上传后,用RedirecToAction("ControllerName")没有跳转成功,用Response("\Home\Index")的方式提示没有找到页面,求正确方法

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-06 14:13
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    1. 问题分析: 在 ASP.NET Core MVC 中,由于 Web 请求的无状态性,页面刷新后会重新发送相同的请求,导致上传操作重复执行。这是因为刷新按钮实际上会重新加载当前页面,从而重新发送请求。
    1. 解决方法: 为了避免页面刷新后重新上传,可以使用 PRG(Post/Redirect/Get)模式来解决。该模式的核心思想是在 POST 操作完成后,将客户端重定向到另一个页面,这样刷新按钮就不会再触发上传操作。 下面给出具体的案例和代码示例: 案例: 假设有一个简单的上传页面,用户可以选择一个文件上传至服务器。上传完成后,页面应该跳转到成功页面。 代码示例:
    2. 创建一个简单的控制器 HomeController 和两个页面 Upload.cshtmlSuccess.cshtml
    public class HomeController : Controller
    {
        // GET: /Home/Upload
        public IActionResult Upload()
        {
            return View();
        }
        // POST: /Home/Upload
        [HttpPost]
        public IActionResult Upload(IFormFile file)
        {
            // 执行上传操作
            // ...
            // 上传完成后重定向至成功页面
            return RedirectToAction("Success");
        }
        // GET: /Home/Success
        public IActionResult Success()
        {
            return View();
        }
    }
    
    1. Upload.cshtml 页面中使用表单进行文件上传:
    <form asp-action="Upload" enctype="multipart/form-data" method="post">
        <input type="file" name="file" />
        <button type="submit">上传</button>
    </form>
    
    1. Success.cshtml 页面中显示上传成功的消息:
    <h1>上传成功!</h1>
    

    通过使用 PRG 模式,当用户在 Upload.cshtml 页面点击上传按钮后,表单将被 POST 到 Upload 动作中执行上传操作。一旦上传完成,控制器将执行重定向至 Success 动作,显示上传成功的消息。这样,刷新按钮将不会再次触发上传操作。 希望以上解答对您有帮助,如有任何疑问,请随时追问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月14日
  • 已采纳回答 7月6日
  • 创建了问题 7月6日

悬赏问题

  • ¥15 网络分析设施点无法识别
  • ¥15 状态图的并发态问题咨询
  • ¥15 PFC3D,plot
  • ¥15 VAE模型编程报错无法解决
  • ¥100 基于SVM的信息粒化时序回归预测,有偿求解!
  • ¥15 物体组批优化问题-数学建模求解答
  • ¥15 微信原生小程序tabBar编译报错
  • ¥350 麦克风声源定位坐标不准
  • ¥15 apifox与swagger使用
  • ¥15 egg异步请求返回404的问题