我试图执行从一个控制器重定向到另一个同时传递一些参数。不幸的是,在GET查询字符串中,参数的值很长且令人讨厌。无论如何,我可以使用POST而不是重定向来获得更好看的URL?是否可以通过POST而不是GET进行RedirectToRoute?
谢谢。
我试图执行从一个控制器重定向到另一个同时传递一些参数。不幸的是,在GET查询字符串中,参数的值很长且令人讨厌。无论如何,我可以使用POST而不是重定向来获得更好看的URL?是否可以通过POST而不是GET进行RedirectToRoute?
谢谢。
正如大家所说,你不能重定向到发布。
但是,您可以通过将值保存在TempData
而不是路径中来避免难看的URL。
对不起,没有。在HTTP spec中不支持通过POST
重定向。大多数实施常见类型重定向的客户端(301 - Permanent和302 - Temporary)向新位置发出GET
请求。
“重定向”是一个GET。如果你正在做一个真正的直接,你正在做的事情是通知浏览器去另一个URL。浏览器比另一个http调用(使用GET)新的url。该网址可能包含参数,但它始终是GET而不是POST。
您可以做的是在会话中存储一些数据,然后当第二个(重定向)请求进入时,您可以从会话中访问这些值。
你不能做一个适当的POST重定向,但你可以使用JavaScript在浏览器中模仿POST重定向:
<form id="myform" action="http://mywebsite.com/">
<input name="myparameter" value="12345" type="hidden" />
</form>
<script>
document.getElementById("myform").submit()
</script>
这是不是一个真正的重定向,它不会执行,以及一个重定向,但这应该工作。
我无法使用接受的解决方案,因为我在两个控制器之间重定向是在不同的Web应用程序中。我可能最终不得不使用这种提供页面的解决方案,并使用自动提交JavaScript的表单。 – 2012-03-01 14:18:59