ASP.Net MVC2 - 发布后,如果用户点击后退按钮,如何清除表单?

时间:2010-10-07 19:03:40

标签: asp.net-mvc form-submit back-button

在我的Web应用程序中,单击ASP.NET MVC表单上的“提交”按钮后,用户将显示“错误”屏幕或“成功”屏幕。在错误的情况下,指示用户单击浏览器上的“后退”按钮并修复他们没有做的任何事情并尝试再次提交。

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

如何在ASP.NET MVC中执行此操作?

1 个答案:

答案 0 :(得分: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进行数据验证,但您可能拥有自己的一组验证和错误检查例程,这些例程也可以在此模式中使用。