ASP MVC 3防止页面刷新时多次插入

时间:2012-03-20 13:48:57

标签: asp.net-mvc-3

假设我有一个简单的ASP MVC3 list 控制器,带有 add 方法,带有id参数。

列表:

http://localhost/MVCAPP/ListFoo/

添加方法

http://localhost/MVCAPP/ListFoo/Add?id=1

在我的添加方法中,我使用添加的元素更新 Viewmodel ,然后调用:

return View("ListFoo", viewModel);

显示更新的列表,一切都很好。

问题是,通过这样的返回,地址栏中的URL仍然是

http://localhost/MVCAPP/ListFoo/Add?id=1

如果用户点击F5,将添加另一个项目,我想阻止。

我知道我可以在控制器中过滤掉这样的行为,但我更愿意将浏览器地址栏重定向到:

http://localhost/MVCAPP/ListFoo/

你知道怎么办?

顺便说一下,我不确定试图控制地址栏内容是查看这个问题的正确方法......

2 个答案:

答案 0 :(得分:3)

在控制器中完成工作后,使用Action.RedirectToAction method重定向客户端。

除此之外,您可以使用POST作为FormMethod将数据发送到服务器。

答案 1 :(得分:2)

这就是为什么您在进行任何此类表单发布时需要使用 PRG Post-Redirect-Get 的原因。

看看here

因此,最好的选择是将用户重定向 GET 方法以显示该页面。