La forma más práctica de pasar datos entre páginas aspx con el método POST es la que se detalla en esta página de forma sencilla:
http://netcodigo.webinfo.es/2006/10/10/pasar-datos-entre-paginas-web-asp-net-20/
Ahora, esto en el caso que yo describo no sirve, ya que no soy yo quien maneja los datos en la página destino, sino un tercero que espera que se los mande por POST.
Para solucionar esto escribí la siguiente clase, si alguno de ustedes se les presenta el mismo problema no tienen más que copiar/pegar el siguiente código (y después leerlo, obviamente jeje)
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Esta clase genera los formularios para mandar por post los datos a otras páginas
/// </summary>
public class RemotePost
{
System.Collections.Specialized.NameValueCollection _Inputs = new System.Collections.Specialized.NameValueCollection();
string _Url = "";
string _Method = "post";
string _FormName = "form1";
/// <summary>
/// Devuelve o setea la url del medio de pago
/// </summary>
public string Url
{
get {return _Url;}
set {_Url = value;}
}
/// <summary>
/// Agrega inputs hidden al formulario
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
public void Add(string name, string value)
{
_Inputs.Add(name,value);
}
/// <summary>
/// Imprime en el cliente el formulario de compra
/// </summary>
public void Post()
{
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Write("" );
System.Web.HttpContext.Current.Response.Write(String.Format("<html><head></head><body onload=\"document.{0}.submit()\">", _FormName));
System.Web.HttpContext.Current.Response.Write(String.Format("<center><form target=\"_blank\" name=\"{0}\" method=\"{1}\" action=\"{2}\" >", _FormName, _Method, Url));
for (int i = 0; i < _Inputs.Keys.Count; i++)
{
System.Web.HttpContext.Current.Response.Write(String.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", _Inputs.Keys[i ], _Inputs[_Inputs.Keys[i ]]));
}
System.Web.HttpContext.Current.Response.Write("</form></center></body></html>" );
}
}
Bien, ¿y cómo se usa esto?
protected void Button1_Click(object sender, EventArgs e)
{
RemotePost myremotepost = new RemotePost();
myremotepost.Url = "https://argentina.dineromail.com/Shop/Shop_Ingreso.asp";
myremotepost.Add("NombreItem", "ValorItem" );
myremotepost.Add("NombreItem2", "ValorItem2" );
myremotepost.Add("NombreItem2", "ValorItem2" );
myremotepost.Post();
}
________________________________________________________________________________________
Fuente: http://codigodavincipuntonet.blogspot.com/