【发布时间】:2016-04-22 08:08:09
【问题描述】:
我是 ASP.Net MVC 的新手。在 PHP 中,即使发布请求无效,我也总是使用 PRG 模式。使用会话闪烁非常容易(也对用户友好)。
但是,在 ASP.Net MVC 中,当请求无效时,我看不到一种简单的 PRG 方法。我可以想到一些方法,但我认为它们不是好的做法,并且会增加一些不必要的工作。
此外,从我读过的几篇文章中,不鼓励在请求无效时使用 PRG。如果这是一种不好的做法,那么处理不成功的发布请求的更好方法是什么?没有PRG真的会更好吗?当用户尝试刷新页面时,我是否应该让相当烦人的浏览器警告?
【问题讨论】:
-
正常的做法是返回view is
ModelStateis invalid 所以显示验证错误信息。 -
@StephenMuecke 我明白了。但是 POST 请求是否正常或可以接受?我的意思是,当您刷新所有浏览器警告时?
-
是的,这有点痛苦。我已经看到一些尝试遵循 PRG 模式并仍然保持
ModelState,例如在this blog 中(但不要使用TempData- 如果你刷新它丢失,除非你使用.keep()或.peek())跨度> -
@StephenMuecke 我们使用的解决方案与博客中给出的解决方案非常相似(顺便说一句,我没有看到太多痛苦),但我看不出有什么替代方案
TempData可以使用(不会让事情变得非常痛苦):确实,在刷新时你会丢失无效的 ModelState,但这样的痛苦比没有 PRG 模式的刷新问题要少,你不觉得吗? -
TempData 已失效,因为它仅对一个请求有效,并且在“选项卡”之间共享。这也使会话变得危险。无状态服务器是一个很好的目标。当您让客户重新发布数据时,您可以轻松实现。
标签: asp.net asp.net-mvc post-redirect-get