TOC

This article is currently in the process of being translated into Spanish (~99% done).

HttpContext:

Forms (POST data)

En el artículo anterior, analizamos al query string y cómo puedes leer los parámetros a través de él. Esto suele ocurrir a través de lo que se llama GET request, que se producirá con mayor frecuencia como resultado de que el usuario ingrese una URL en el navegador o haga clic en un enlace. Como alternativa al GET request encontraremos un POST request. Normalmente, se inicia un POST request cuando el usuario envía un FORM (como un formulario de contacto o un formulario de inicio de sesión). A diferencia de un GET request, donde los datos están visibles en la dirección URL, no hay datos visibles para el usuario en un POST request. Por este motivo, debe usar otra propiedad en la clase HttpContext para recoger datos POST: la propiedad Form.

En ASP.NET MVC, la forma más común de tratar con formularios es vincular o atar el formulario a un modelo. Eso significa que cada campo del formulario está atado a una propiedad en el modelo, permitiéndole al formulario leer de el modelo y también escribir en el, cuando el formulario es enviado. Esto es frecuentemente referido como Model Binding, y lo discutiremos en algún lugar en este tutorial, pero en este artículo y, access haremos a los datos de FORM a la vieja usanza.

Accesando a los datos de FORM o formulario

La propiedad Form te permite De hecho muchas cosas parecidas a la propiedad Query - actúa como un diccionario con llaves y sus valores. Así que, cuando tú envías una solicitud POST al controlador, por ejemplo enviar un formulario, todos los campos incluidos serán agregados al diccionario Form con sus nombres como Key (o llave) y sus valores como el Value(valor). Permíteme ilustrarte esto con un simple ejemplo:

<form method="post" action="/Home/FormsTestPost">  
<label for="txtName">Your name:</label>  
<input type="text" id="txtName" name="UserName" />  

<label for="txtAge">Your age:</label>  
<input type="number" id="txtAge" name="UserAge" />  

<button type="submit">Submit</button>  
</form>

Es sólo un formulario básico en HTML. Nota Cómo establezco el atributo method a POST - los formularios soportan el método GET también, pero casi siempre es mejor usar el método POST cuando se trata con formularios.

Mi controlador podría entonces lucir así:

public class HomeController : Controller  
{  
[HttpGet]  
public IActionResult FormsTest()  
{  
return View();  
}  

[HttpPost]  
public IActionResult FormsTestPost()  
{  
return Content("Hello, " + HttpContext.Request.Form["UserName"] + ". You are " + HttpContext.Request.Form["UserAge"] + " years old!");  
}  
}

Nota Cómo puedo accesar a los valores de los campos FORM referenciando los por sus nombres(UserName yUserAge, cómo están definidos en la propiedad name en los campos del formulario) en la colección Form.

Resumen

Gracias a la clase HttpContext y su propiedad Form, accesar a los datos de FORM/POST es muy fácil en ASP.NET MVC. Usar esto no es necesario usualmente, gracias al Model Binding, pero aún así es útil en algunos casos.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!