在ASP.NET MVC中发布/重定向/获取模式
在ASP.NET MVC中实现Post / Redirect / Get模式的最佳实践是什么? 特别是,当您想要重定向回初始操作/控制器时,最好的方法是什么?
这是我目前正在做的事情:
- 向用户显示表单。
- 在表单中,使用
- 在操作中,使用
ViewData["returnUrl"] = Request.Url;
- 在表单中,使用
- 用户通过POST提交表单
- 重定向到
returnUrl
模型绑定,如果不为null
。 否则,重定向到主页。
这就完成了工作,但感觉这会导致很多重复。 我也意识到我可能会重定向到Request.UrlReferrer
…
您认为最干净,最理想的方法是什么?
你这样做的方式很好,但看起来你可能会稍微过度思考它。 您的POST操作是否从多个表单中获取表单post? 如果没有,为什么还要隐藏一个隐藏的表格字段? 你可以通过一个简单的RedirectToAction("MyAction")
逃脱
通常,处理POST的操作知道成功提交后需要重定向的位置。 因此,实现RGP的每个操作都可以简单地调用RedirectToAction(string)
。
public ViewResult Edit(string email) { // save the email return RedirectToAction("Edit"); }