是否有可能通过POST而不是GET RedirectToRoute?

时间:2011-03-10 04:51:21

标签: asp.net-mvc http post redirect asp.net-mvc-3

我正在尝试在传递一些参数的同时执行从一个控制器到另一个控制器的重定向。不幸的是,在GET查询字符串中,参数的值很长且令人讨厌。无论如何我可以在重定向上使用POST来获得更好看的URL吗?

感谢。

4 个答案:

答案 0 :(得分:4)

正如大家所说,你无法重定向发布。

但是,您可以通过在TempData而不是路线中添加值来避免丑陋的网址。

答案 1 :(得分:2)

您无法进行正确的POST重定向,但您可以在浏览器中使用JavaScript来模仿POST重定向:

<form id="myform" action="http://mywebsite.com/">
  <input name="myparameter" value="12345" type="hidden" />
</form>
<script>
  document.getElementById("myform").submit()
</script>

这不是真正的重定向,它的效果不如重定向,但这应该有效。

答案 2 :(得分:0)

抱歉,没有。 HTTP spec不支持通过POST重定向。大多数实施常见重定向(301 - Permanent302 - Temporary)的客户都会向新位置发出GET个请求。

答案 3 :(得分:0)

“重定向”是GET。如果你正在做一个真正的直接你正在做的事实上是通知浏览器去另一个网址。浏览器比另一个http调用(使用GET)到新的url。网址可能包含参数,但它始终是GET而不是POST。

您可以做的是在会话中存储一些数据,然后当第二个(重定向)请求进入时,您可以从会话中访问这些值。