浏览器刷新时的 Http Post

Abh*_*yak 2 asp.net-mvc

我的页面结构

我有 3 个文本框,其中启用了客户端验证。

我有提交按钮来发布表单数据。

问题

当我单击提交按钮时,它将转到我的 Post 方法,假设我没有在文本框中输入值,然后它会从服务器端(Http Post)抛出错误。

现在我将在文本框中输入值然后我将刷新浏览器,它进入 Post 方法而不是 Get !!!

有什么帮助吗??

Jud*_*udo 5

这是浏览器的默认行为,它在刷新时重新发出最后一个请求,在这种情况下恰好是 POST。

如果您希望防止刷新时重新 POST,您应该在 MVC 中实现 PRG(POST-Redirect-GET)模式。这是接收 POST 的控制器在处理后使用 GET 请求重定向的地方。因此,最后一个浏览器请求是一个 GET,它将在刷新时重新发出。

[HttpPost]
public ActionResult Create(Model model) {
    if (ModelState.IsValid) {
      //do processing
         return RedirectToAction("Details", new { id = model.Id })
    }
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)