我有一个 ASP.Net 问卷应用程序,它将数据重新提交到同一页面,每次显示不同的问题。有“后退”和“下一步”按钮可在问题之间导航。
我想检测何时由于浏览器刷新与按下其中一个按钮而提交表单。我遇到了WebForms approach但不知道如何在 MVC 2 应用程序中应用这些原理,因为页面事件不可用(据我所知......我对 Microsoft 的 MVC 模型还很陌生)。
如何将这一原则应用于 MVC 2?有没有更好的方法来检测刷新?
最佳答案
您可以使用 TempData
的重定向后模式。示例:
- “后退”和“下一步”按钮将表单发送到 Controller 操作
- Controller 操作将某些状态放入
TempData
中,并重定向到另一个 Controller 操作,该操作将验证数据是否在TempData
中并返回 View - 用户在浏览器上按 F5,上一个操作在 GET 上调用,并且由于状态不再进入
TempData
,您知道用户按了 F5 并且没有通过表单提交。
为了说明这一点:
public class HomeController: Controller
{
public ActionResult Index()
{
var state = TempData["state"];
if (state == null)
{
// the user directly arrived on this action without passing
// through the form submission
}
return View();
}
[HttpPost]
public ActionResult Index(string back)
{
TempData["state"] = new object();
return RedirectToAction("Index");
}
}
关于asp.net-mvc-2 - 检测 ASP.Net MVC 2 中的浏览器刷新与表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2918651/