我在.Net 中有一个页面,当前在单击按钮时会处理一些信息。它发回,更新一些信息,然后将用户重定向。
我现在想要做的是同一个按钮,当它被点击时,信息会被更新,但它不是重定向而是发布到另一个站点。原因是这个其他站点需要从我提交的表单中读取一堆数据。
所以,我知道 PostBackUrl 属性,但这将停止处理我需要完成的数据。
那么有没有另一种方法让我能够以某种方式将两个回发结合起来,然后变成另一个站点的 POST 呢?
或者让我能够以某种方式进行我需要的更新,然后进行 POST?
建议的解决方案都很有效,但唯一真正做到了我需要的解决方案是这个:
上面的其他答案不起作用的原因是我正在发布到支付网关,无论出于何种原因,他们的系统认为除了我链接到的解决方案之外,所有解决方案中的各种缺失字段都存在问题。不知道为什么,我无法访问他们的系统以了解他们实际在做什么。
无论如何,感谢所有答案,但如果您遇到类似问题,请查看链接的答案。
如果 PostBack 不是绝对需要的,您实际上可以在请求查询本身中发送它们。
您可以POST
从代码隐藏中进行操作,您可以在此答案中找到详细信息Redirect to another page using Post method from Code behind
如果我的问题是正确的,我认为您将需要从 Request.Form 获取所有表单数据并向另一个站点发出 HttpWebRequest:
string url = "http://anothersite.com/";
// create post data
StringBuilder postDataBuilder = new StringBuilder();
foreach (var key in this.Request.Form.AllKeys)
{
postDataBuilder.AppendFormat("{0}={1}&", this.Request.Form[key]);
}
string postData = postDataBuilder.ToString();
// create the web request for the POST
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = postData.Length;
// add the post data
using (StreamWriter requestStream = new StreamWriter(webRequest.GetRequestStream()))
{
requestStream.Write(postData);
}
希望这可以帮助!