asp.net-mvc-2 - 检测 ASP.Net MVC 2 中的浏览器刷新与表单提交

标签 asp.net-mvc-2 refresh

我有一个 ASP.Net 问卷应用程序,它将数据重新提交到同一页面,每次显示不同的问题。有“后退”和“下一步”按钮可在问题之间导航。

我想检测何时由于浏览器刷新与按下其中一个按钮而提交表单。我遇到了WebForms approach但不知道如何在 MVC 2 应用程序中应用这些原理,因为页面事件不可用(据我所知......我对 Microsoft 的 MVC 模型还很陌生)。

如何将这一原则应用于 MVC 2?有没有更好的方法来检测刷新?

最佳答案

您可以使用 TempData 的重定向后模式。示例:

  1. “后退”和“下一步”按钮将表单发送到 Controller 操作
  2. Controller 操作将某些状态放入 TempData 中,并重定向到另一个 Controller 操作,该操作将验证数据是否在 TempData 中并返回 View
  3. 用户在浏览器上按 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/

相关文章:

c# - ASP.NET MVC 从虚拟路径获取文件

c# - 上传时验证大文件

asp.net - PostAuthenticateRequest 多次触发

vb.net - 为什么我在ASP.Net ..中获得::1作为IP地址,以及如何获取正确的IP地址?

javascript - 如何用 Angular 刷新图像

asp.net-mvc - ASP.NET MVC 2 DropDownList 未设置选定值

java - 我是否必须关闭浏览器才能刷新我的 Java 小程序?

javascript - 模态窗口和 Div 刷新

c# - 问题 如何使 C# 的 VS IDE 设计器失效/刷新?

service - 无法在 PowerBI 服务中安排刷新