2

我的页面结构

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

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

问题

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

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

有什么帮助吗?

4

1 回答 1

5

这是浏览器的默认行为,它在刷新时重新发出最后一个请求,在这种情况下恰好是一个 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);
}
于 2013-01-30T09:34:14.943 回答