首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用POST动词重定向到页面?

如何使用POST动词重定向到页面?
EN

Stack Overflow用户
提问于 2008-09-25 03:30:30
回答 6查看 164.8K关注 0票数 146

当您在控制器中调用RedirectToAction时,它会使用HTTP GET自动重定向。我如何显式地告诉它使用HTTP POST?

我有一个既接受GET请求又接受POST请求的操作,并且我希望能够使用POST执行RedirectToAction并向其发送一些值。

如下所示:

代码语言:javascript
复制
this.RedirectToAction(
    "actionname",
    new RouteValueDictionary(new { someValue = 2, anotherValue = "text" })
);

我希望使用HTTP POST而不是GET发送someValueanotherValue值。有人知道怎么做吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-09-24 19:35:03

HTTP不支持使用POST重定向到页面。当您重定向到某个地方时,HTTP "Location“标头会告诉浏览器要去哪里,浏览器会对该页面发出一个GET请求。您可能只需要为您的页面编写代码来接受GET请求和POST请求。

票数 115
EN

Stack Overflow用户

发布于 2009-08-27 19:06:41

对于您的特定示例,我将这样做,因为您显然并不关心实际上让浏览器获取重定向(通过接受您已经接受的答案):

代码语言:javascript
复制
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index() {
   // obviously these values might come from somewhere non-trivial
   return Index(2, "text");
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(int someValue, string anotherValue) {
   // would probably do something non-trivial here with the param values
   return View();
}

这很容易工作,实际上也没有什么好笑的事情--这允许你保持第二个只接受HTTP POST请求的事实(除了这个例子,它无论如何都在你的控制之下),而且你也不需要使用TempData,这就是你在答案中发布的链接所暗示的。

如果有什么不对劲的话,我很想知道它的“错误”在哪里。显然,如果你真的想要向浏览器发送一个重定向,这是行不通的,但你应该问一问,为什么你要不顾一切地转换它,因为这对我来说似乎很奇怪。

希望这能有所帮助。

票数 168
EN

Stack Overflow用户

发布于 2013-10-15 18:19:33

如果要在重定向期间在两个操作之间传递数据而不在查询字符串中包含任何数据,请将模型放入TempData对象中。

动作

TempData["datacontainer"] = modelData;

视图

代码语言:javascript
复制
var modelData= TempData["datacontainer"] as ModelDataType; 

TempData是一个生命周期非常短的实例,您应该只在当前和后续请求期间使用它!因为TempData是这样工作的,所以您需要确定下一个请求是什么,并且重定向到另一个视图是唯一可以保证这一点的时候。

因此,只有在重定向时,才能可靠地使用TempData。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/129335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档