如何发布数据并重定向到外部页面?

我在发布数据和重定向到外部URL时遇到问题。 外部URL是一个在线支付网关,只接受使用POST方法提交的表单。

像下面这样简单的html表单可以正常运行

  

但在我的场景中,当用户单击我的aspx页面上的按钮时,我需要先进行一些服务器端处理,例如创建一个NameValueCollection对象,然后再将其重定向到支付网关。

一些人试图使用以下链接中的示例: http : //www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET ,但该页面没有重定向到外部URL原因。 以下代码行似乎没有做任何事情。

 page.Controls.Add(new LiteralControl(strForm)); 

那么有关如何解决这个问题的任何建议? 谢谢。

我想我想出了如何解决这个问题。 这就是我所做的。

创建一个中间页面,例如DoPost.aspx。

    Post Form    

然后在后面的代码中,

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { var url = "external.url"; form1.Action = url; ltrPostData.Text = "Create  html controls from Request.QueryString() and assign the string value to the Literal control's Text property."; } } 

在Submit.aspx上,按钮单击事件发生的位置,

 //assume that the NameValueCollection object has already been created and populated var redirectUrl = string.Format("{0}?{1}", "DoPost.aspx", BuildQueryString(data)); Response.Redirect(redirectUrl, true); public static string BuildQueryString(NameValueCollection data) { // create query string with all values return string.Join("&", data.AllKeys.Select(key => string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(data[key])))); } 

如此有效,我们仍然可以使用Response.Redirect()将数据传递到外部链接,尽管我们需要通过第二页。 简而言之,Submit.aspx [GET] => DoPost.aspx [Post] =>网关

你需要看看HttpWebRequest。

这是另一个问题,它可以彻底解释您需要为您的问题做些什么。

使用HttpWebRequest发布表单数据

这是我的解决方案,一个简单而优雅的解决方案

Samer Abu Rabie在ASP.NET中重定向和发布

尝试使用

 Response.Redirect("http://www.microsoft.com"); 

响应重定向msdn