2010-05-28 53 views
1

如何检测处理回发的控制器上的页面刷新/ F5键推送?我需要区分用户按下两个按钮之一(例如Next,Previous)和何时发生F5 /页面刷新。检测ASP.NET MVC中的页面刷新/ F5键2

我的情况是,具有用户按下“下一步”或“上一个”按钮中的每个调用之间所示的不同内容的单个向导页面。我遇到的错误是当用户刷新页面/按下F5键时,浏览器将请求重新发送回控制器,该控制器作为回发处理,并且FormCollection类型用于查找“submitButton”键并获取其值(例如“下一步”,“发送”)。此部分仿照Dylan Beattie在How do you handle multiple submit buttons in ASP.NET MVC Framework?发布的文章。

也许我试图弯曲MVC 2到它不打算去,但我想留在底层数据库驱动的显示什么内容和顺序当前的设计。这使我们可以将新内容添加到数据库中,而无需修改显示内容的代码。

感谢, 迈克尔

回答

4

推荐的方法是使用PRG模式 - 后重定向消息获取。含义:在提交后,将客户端重定向到索引或内容,导致只有在用户点击F5时重新加载索引,而不是再次发布数据。

检查:http://en.wikipedia.org/wiki/Post/Redirect/Get

这:http://www.google.sk/search?q=prg+mvc+asp.net

+1

换一种方式......让你的控制器动作返回查看结果的RedirectToAction结果来代替。 – AaronSieb 2010-05-28 14:20:46

+0

提供了第二个链接,我找到了以下内容http://www.eworldui.net/blog/post/2008/05/ASPNET-MVC---Using-Post2c-Redirect2c-Get-Pattern.aspx,它清楚地显示了如何实施PRG设计模式。我曾遇到过这个,但从来没有应用它在ASP.NET MVC 2的上下文中。在我自己通过这个例子之后,我可以看到我需要做什么调整,所以这显然表明了我需要去的方向。感谢您的及时回复和输入! – Michael 2010-05-28 14:53:42

+0

谢谢AaronSieb,因为我正在返回一个View(“PageName”,model)实例。就像额外的FYI一样,我的设计最初有两个名为“Review”的方法,其中一个是GET,另一个是POST。在POST“Review”方法中,我试图捕获按下哪个提交按钮(例如“Next”或“Previous”),并从名为“Next”和“Previous”的两个相应帮助程序方法之一返回新的ActionResult。这些帮助方法中的每一个都会根据用户所采取的方向(例如向导中的向前或向后)返回内容。谢谢! – Michael 2010-05-28 14:58:48