Por Alvaro
08/06/2009
Enviar esta pagina a un amigo.
Nos vamos a hacer una clase especial que vamos a poder reutilizar siempre que queramos para la llamada.
Luego, solo tenemos que llamar a la clase con los parametros de nombre y action del formulario mas los campos que le corresponden.
La clase es esta:
Public Class RemotePost
Private Inputs As System.Collections.Specialized.NameValueCollection = New System.Collections.Specialized.NameValueCollection
Public Url As String = ""
Public Method As String = "post"
Public FormName As String = "form1"
Public Sub Add(ByVal name As String, ByVal value As String)
Inputs.Add(name, value)
End Sub
Public Sub Post()
With Current.Response
.Clear()
.Write("<html><head>")
.Write(String.Format("</head><body onload=""document.{0}.submit()"">", FormName))
.Write(String.Format("<form name=""{0}"" method=""{1}"" action=""{2}"" >", FormName, Method, Url))
Dim i As Integer = 0
Do While i < Inputs.Keys.Count
.Write(String.Format("<input name=""{0}"" type=""hidden"" value=""{1}"">", Inputs.Keys(i), Inputs(Inputs.Keys(i))))
i += 1
Loop
.Write("</form>")
.Write("</body></html>")
.End()
End With
End Sub
End Class
Para llamar a la pagina, usaremos esta rutina que llama a la clase desde un boton, el load de la pagina, lo que querais:
Dim myremotepost As RemotePost = New RemotePost
myremotepost.Url = "bank_response.aspx"
myremotepost.Add("field1", "Huckleberry")
myremotepost.Add("field2", "Finn")
myremotepost.Post()
Ya solo queda leer el formulario y tratar la informacion desde la pagina que recibe los datos, por ejemplo:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Request.Form.Count > 0 Then
For Each Str As String In Request.Form.AllKeys
Response.Write(Str & " : " & Request.Form.Item(Str))
Next
End If
End Sub
Ahora solo cuidado con lo que usais este codigo y a ver que tipos de formularios rellenais ;)
|