【问题标题】:Post from controller action to third party website从控制器操作发布到第三方网站
【发布时间】:2018-08-03 11:48:22
【问题描述】:
我有一个带有表单的 MVC 页面,当首先将帖子提交到我的控制器并由我的控制器操作处理时。
在控制器操作中,我操纵发布的数据,然后需要将该数据重新发布到第三方网页。
如何在 MVC 发布操作中将表单值重定向和重新发布到第三方网页?
更新
这在 .Net MVC 和 WebForms 中是可能的。请参阅下面的解决方案。
【问题讨论】:
标签:
model-view-controller
asp.net-mvc-5
http-post
【解决方案1】:
您需要通过以下方式处理 [Post] Action:
- 添加指定要重定向到的页面的位置标头。
- 使用实例 HttpStatusCodeResult 返回临时重定向。
您必须使用 307 临时重定向状态响应代码,因为它维护请求的 POST 正文和方法。如果您使用 302 状态响应,浏览器会将请求转换为 GET 请求并丢弃最初发布的表单值。
它是如何工作的?
这是通过让您的服务器向浏览器传达页面位置已更改的信息来实现的。然后浏览器将表单数据重新发布到新的页面位置。
以下使用示例:
[HttpPost]
public ActionResult Test()
{
var amount = Request["amount"];
string url = "/Home/Test2";
HttpContext.Response.AddHeader("Location", url);
return new HttpStatusCodeResult(307);
}
public ActionResult Test2()
{
var x = Request["amount"];
Response.Write("Stuff 123...." + x);
return View();
}