TOC

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

HttpContext:

Forms (POST data)

En el artículo pasado, discutimos sobre la cadena de consulta y cómo puedes leer parámetros a través de este. Esto pasará usualmente a través de las consultas llamadas GET, las cuales ocurren más frecuentemente como resultado de el usuario ingresando una URL en el explorador o haciendo click en un link. Como una alternativa a las solicitudes GET encontraremos la solicitud POST. Una solicitud POST es iniciada normalmente cuando un usuario Envía un formulario (como una forma o formulario de contactos o una forma de logueo). Por esa razón, necesitas usar otra propiedad de la clase HttpContext para tomar los datos por 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!