从一个控制器动作发布到另一个控制器动作(不重定向)
Posted
技术标签:
【中文标题】从一个控制器动作发布到另一个控制器动作(不重定向)【英文标题】:Post from one controller action to another (not redirect) 【发布时间】:2010-09-30 00:13:12 【问题描述】:我有一个动作,如果它满足某些条件,我需要转发到另一个动作,但是在传递到下一个动作时我无法保留表单数据。
接收动作接受一个FormCollection,发送动作则
目前,我正在执行 return RedirectToAction("action","controller", form)。而且我可以确定表单变量在重定向之前有键(form.HasKeys() = true)。
但是,当操作被触发时,FormCollection 为空(form.HasKeys() = false)。
有什么想法吗?是否有我缺少的“PostToAction”方法?
仅供参考:我正在使用 ASP.NET MVC Beta。非常感谢!
编辑:对于有此问题的人,请查看PRG Pattern。这是我想要做的实际术语,它也启用了漂亮的 url。
【问题讨论】:
【参考方案1】:当调用 RedirectToAction 时,它会进行 HTTP 重定向,并会向其他操作 URL 进行 GET。如果您需要重用来自另一个控制器的代码,我会按照 ewalshe 的建议进行操作,将 common 移至 BaseController 或业务服务,并将这两个操作委托给它。
此链接可能会有所帮助:
ASP.NET MVC Tip #6 – Call RedirectToAction after Submitting a Form How to RedirectToAction in ASP.NET MVC (Preview 4) without losing request data【讨论】:
爱德华多,感谢您的联系!看看 Stephen Walther 的例子会有所帮助。【参考方案2】:我会重构这两个控制器并将公共代码放入帮助程序或公共基类中。这样,两个控制器中的操作就可以委托给公共代码。
【讨论】:
以上是关于从一个控制器动作发布到另一个控制器动作(不重定向)的主要内容,如果未能解决你的问题,请参考以下文章