En el proyecto que estoy realizando ahora, entre los requerimentos está un formulario de contacto que al ser llenado, se envíe un correo al webmaster con la informacion de dicho formulario.
Pues, pensé al principio que esto iba a ser dificil en MVC. ¡Qué equivodado estaba!
Pues bueno, a manera super rápida, les cuento, esto es lo que necesitan para que puedan cargar fácilmente la información de un formulario web:
- Tener un controlador y una vista asignada a el formulario de contacto (Luego, si me preguntan, pondré como hacerlo)
- En el código de la vista, en la parte del formulario, ponemos lo siguiente:
<%
using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
Esto nos da un form con el Html.BeginForm(), y poniendolo con un using, nos lo cerrará automáticamente.
Luego, con el fieldset lo que hacemos es poner un marquito alrededor de nuestros controles, y con el legend le ponemos un titulo(Opcional)
- Ponemos nuestros controles dentro el fieldset, de la siguiente manera:
<p>
<label for="Username">Usuario:</label>
<%= Html.TextBox("Username") %>
</p>
Donde Username dentro del constructor del textbox será el nombre(lo necesitaremos, obviamente para accesar los datos luego. Pueden probar los diferentes métodos de Html. Para ver que hay, así como probar los distintos constructores que hay para cada método. - Ponemos el botón enviar con
<input type="submit" value="Enviar" />
- Cerramos todo lo que dejamos abierto, sin olvidar nada:
- </fieldset>
<% } %>
- Ahora que tenemos lo que necesitamos dentro de la vista, iremos al controlador para escribir un método que nos reciba todo eso cuando el usuario dé clic en enviar:
- public
ActionResult contacto() - {
return View();- }
- [AcceptVerbs(HttpVerbs.Post)]
public
ActionResult contacto(FormCollection valores)- {
- valores["Email"].ToString();
return RedirectToAction("gracias");- }
public
ActionResult gracias()- {
return View();- }
Con esto hacemos lo siguiente: el primer método ahí es el normal para crear la vista. El segundo es el que nos importa; con lo primero que dice algo de post (HttpVerbs.Post) le indicamos que ese método es el que recibirá la acción post del botón, y con valores tendremos los datos del formulario! Asi de simple, ponemos valores["Username"].toString() y tendremos el valor de el campo que creamos antes. Cuando hayamos hecho lo que necesitemos, simplemente le damos un return, pero no el corriente View() que lo que haría seria hacernos cargar de nuevo la página de contacto sin nada, sin indicar nada, pero como no es esto lo que queremos, simplemente le hacemos RedirectToAction("gracias"); para que nos redirija a otro nuevo método, en este caso gracias, que ese al hacer un return View(); nos retornará una vista diferente, que se llama gracias.
Podemos modificar el contacto con parámetros (el post) para que, por ejemplo en mi caso, si se pudo enviar el correo redirija a gracias, sino, a otro de error, por ejemplo(mientras escribo esto, no lo he hecho).
Por ahora eso es todo, si alguien quiere más info, que me la pida por un comentario o en Twitter.
Saludos!

No hay comentarios:
Publicar un comentario