Brendan Bishop
Brendan Bishop

Reputation: 1

How can I prevent form resubmission in MVC

My current situation is as follows. I have a form that when it gets submitted, passes the model into the controller and it does what it needs to do. At the end it redirects to a confirmation page that also gets passed the same model. All of that works fine, except when I am on the confirmation page, whenever I reload the page it resubmits the form.

I've tried using TempData but when I use that it requires for my model to be serializable and my model uses other models inside it that were made by other people that all need to be serializable which would result in like 15-20 different classes all needing to become serializable which just doesnt seem reasonable.

Here is some of what I am working with:

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

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

Upvotes: 0

Views: 4255

Answers (2)

Gustavo Santos
Gustavo Santos

Reputation: 125

This is a common problem in MVC development, you can follow the Post/Redirect/Get strategy to avoid the request.

https://en.wikipedia.org/wiki/Post/Redirect/Get

Upvotes: 0

Thomas Gassmann
Thomas Gassmann

Reputation: 781

You could make use of the Post Redirect Get Pattern. You could return the following in SubmitClaim:

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

For more information, please see https://en.wikipedia.org/wiki/Post/Redirect/Get

Upvotes: 3

Related Questions