在我的Web应用程序中,单击ASP.NET MVC表单上的“提交”按钮后,用户将显示“错误”屏幕或“成功”屏幕。在错误的情况下,指示用户单击浏览器上的“后退”按钮并修复他们没有做的任何事情并尝试再次提交。
这很好用,因为当用户点击回来时,所有先前输入的数据仍然在各个字段的屏幕中。但是在Success屏幕的情况下,如果用户单击Back,我希望清除数据,这样他们就不会再意外地重新提交数据。
如何在ASP.NET MVC中执行此操作?
答案 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
进行数据验证,但您可能拥有自己的一组验证和错误检查例程,这些例程也可以在此模式中使用。