1

在我的 Web 应用程序中,单击 ASP.NET MVC 表单上的提交按钮后,会向用户显示错误屏幕或成功屏幕。在出现错误的情况下,系统会指示用户单击浏览器上的“后退”按钮并修复他们没有正确执行的任何操作,然后再次尝试提交。

这很好用,因为当用户单击返回时,所有先前输入的数据仍然在屏幕的各个字段中。但是在成功屏幕的情况下,如果用户单击返回,我希望数据被清除,这样他们就不会意外地再次重新提交数据。

如何在 ASP.NET MVC 中做到这一点?

4

1 回答 1

1

实现此目的的方法是使用Post-Get-Redirect模式。它不是特定于 asp-mvc 的,但正如 Wiki 所说

Web 开发人员的一种常见设计模式,可帮助避免某些重复的表单提交,并允许用户代理使用书签和刷新按钮更直观地表现。

单击背面不是处理此问题的安全方法。一些浏览器在提交后不会保持表单状态。这种模式直接解决了accidentally re-submit数据问题。

在代码方面,请查看Jag Reehal的这篇博客文章,了解如何对控制器进行单元测试。

[HttpPost]
public ActionResult Create(SomeViewModel model)
{
  if (ModelState.IsValid)
  {
     // do some stuff that saves your data and then...
     return RedirectToAction("Success");
  }
  else
  {
     // your model is not valid so return the form back to the user for 
     // additional modifications.
     return View(model);
  }   
}

注意:虽然以上ModelState用于数据验证,但您可能有自己的一组验证和错误检查例程,也可以在此模式中使用。

于 2010-10-07T19:50:37.083 回答