首页 > 解决方案 > 如何防止在 MVC 中重新提交表单

问题描述

我目前的情况如下。我有一个表单,当它被提交时,将模型传递给控制器​​,它会做它需要做的事情。最后,它重定向到一个确认页面,该页面也通过了相同的模型。所有这一切都很好,除了当我在确认页面上时,每当我重新加载页面时,它都会重新提交表单。

我尝试过使用 TempData,但是当我使用它时,它需要我的模型可序列化,并且我的模型使用其中的其他模型,这些模型由其他人制作,都需要可序列化,这将导致 15-20 个不同的类全部需要变得可序列化,这似乎不合理。

以下是我正在使用的一些内容:

[HttpPost]
public async Task<ActionResult> SubmitClaim(WarrantyClaim model)
{ 
       ... code ...
      return BeddingWarrantyConfirmation(model);
}

public ActionResult BeddingWarrantyConfirmation(WarrantyClaim model)
{
    return View("BeddingWarrantyConfirmation",model);
}

标签: c#asp.net-mvc

解决方案


您可以使用 Post Redirect Get Pattern。您可以在中返回以下内容SubmitClaim

return RedirectToAction("BeddingWarrantyConfirmation", "CONTROLLER", model);

有关更多信息,请参阅https://en.wikipedia.org/wiki/Post/Redirect/Get


推荐阅读