Es posible enviar los datos de un formulario HTML (página estática) hacia un web service hecho en ASP.NET?
La respuesta es: Sí se puede.
Vamos a demostrarlo mediante un caso muy simple: La idea es que se disponga de una página html que contenga un formulario típico de Contáctenos… entonces, cuando el usuario presiona el botón Send, la data se envía al web service, luego de eso el web service guarda la data en la bd y finalmente envía la respuesta.
Entonces necesitamos un proyecto que contenga un web service y una página html… nada más.
Creamos un web service llamado wsTest.asmx:
Imports System.Web.Services <System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _ Public Class wsTest Inherits System.Web.Services.WebService <WebMethod()> _ Public Function SaveInfo(ByVal nombre As String, ByVal email As String, ByVal mensaje As String) As String 'guardar info a la base de datos Return "Se ha guardado la información. Pronto nos comunicaremos con Ud." End Function End Class
El web service sólo tiene un método llamado SaveInfo, que es quien recibe los datos de la página html y se supone que los guarda en una base de datos… luego devuelve el mensaje de éxito.
Y este sería el código de la página html:
<html>
<head> <style type="text/css"> * { font-family: Trebuchet MS; } div { border: solid 2px red; width: 260px; background-color: #fe9900; padding: 10px; } input, textarea { width: 250px; } </style> <title>Página de Prueba</title> </head> <body> <form action="wsTest.asmx/SaveInfo" method="POST"> <div> <h2> Contáctenos</h2> Nombre: <br /> <input type="text" name="nombre" /> <br /> Email: <br /> <input type="text" name="email" /> <br /> Escriba su mensaje: <br /> <textarea name="mensaje" rows="5"></textarea> <input type="submit" style="width: 100px;" value="Send" /> </div> </form> </body> </html>La carnecita está en:
1.- El atributo action del tag FORM, osea ”wsTest.asmx/SaveInfo”. Esto representa la ruta del web service y el nombre del método que estoy invocando… el cual recepciona la data enviada desde la página html.
2.- La correspondencia que hay entre el atributo name de cada control HTML y los parámetros del web service... que en este caso son: nombre, email y mensaje.
De igual manera, se puede usar el método GET, sólo hay que cambiar el atributo METHOD:
<form action="wsTest.asmx/SaveInfo" method="GET">
Espero que les sea de utilidad ;)
2 comentarios:
Gran aporte, gracias.
Me pregunto si sería posible pasarle un XML en lugar de varios parámetros a la función. Lo comento en el caso de que tengamos muchos argumentos del tipo nombre, apellidos, numero de cuenta...
Un saludo y gracias.
quisira saber como se guarda a la bd
Publicar un comentario