Bien,
He buscado mucha información de como es el uso de POST en ASP.NET MVC, he encontrado muy pocos resultados, y los que he encontrado no lo explican a como lo necesito así que voy hablar un poco de esto.
Nota: Si no sabes muy bien como funciona MVC recomiendo los siguientes 2 tutoriales:
Manual Framework ASP.NET MVC
The ASP.NET MVC Officia
Si eres nuevo en ASP.NET MVC te habrás dado cuenta que por obvias razones no existen los eventos, es decir, a diferencia de ASP.NET WEB FORMS no es posible solo darle clic a un boton y hacer que ejecute acciones como guardar lo que tienes en el textbox en una base de datos.
Aqui podria decir que es algo mas o menos como PHP, si has programado en PHP sabes que todo se hace a “manita” necesitas crear tus formularios desde código HTML y creas un boton que envie estos datos a otra pagina para que los datos del formulario sean procesados en otra pagina.
Iniciemos.
Para este tutorial necesitamos lo siguiente:
*Visual Studio 2010 o superior (Tambien pueden usar Visual Web Developer)
*Framework 4.0 (Tambien pueden usar 3.5)
*Ganas de dejar un comentario al terminar de leer (Asi me motivo a escribir mas ;-)
Abrir Visual Studio
Clic en Archivo > Nuevo Proyecto
Seleccionar: ASP.NET MVC Web Application
Nombrar al proyecto como:MvcUsandoPost
Click en OK

En la siguiente pantalla seleccionamos Empty (Vacio) y en el View engine seleccionamos Razor

Click en OK
Ahora en el Explorardor de soluciones tenemos varios directorios, entre ellos hay tres directorios llamados:
*Controllers
*Models
*Views
Ubicamos el directorio Controllers para crear el controlador principal. Clic derecho sobre el directorio y seleccionamos: Agregar -> Controller
El nombre del controlador sera: “Home” Pero por norma general cada controlador termina con la palabra “Controller” Asi que debe llamarse: “HomeController”
En la siguiente pantalla la dejamos como se ve la siguiente imagen:

Se observa la siguiente Pantalla:

Hemos creado un controlador el cual tiene un evento (Acción de ahora en adelante) que se llama Index, y como tal, lo que regresa es una vista de igual nombre (Index)
Pero actualmente no contamos con esta vista, por lo cual vamos a proceder a generarla.
Ubicamos el directorio Views y damos clic derecho sobre el. Seleccionamos: Agregar -> Nueva Carpeta. Nombramos a esta carpeta Home
(Como el nombre de nuestro controlador ya que esta vista pertenece al controlador principal llamado Home)
Ahora ya que hemos creado este directorio llamado Home, lo seleccionamos y dando clic derecho sobre el. Seleccionamos Agregar -> View
En el nombre le pondremos Index
Y lo demás lo dejamos como se ve a continuación:

Click en ok
Crear el Modelo:
Bien, aqui tenemos que crear el modelo, es decir la lógica del negocio.
Ubuicamos el directorio llamado Models.
Click derecho>Agregar > Clase.
En el nombre le ponemos: Usuario y damos clic en ok.
Bien, ahora solo tenemos que agregar 2 propiedades para que se vea de la siguiente forma:

Bien, guardamos y ahora vamos a dirijirnos a nuestra vista llamada Index en la cual vamos agregar un formulario para que quede de la siguiente manera:
@{
ViewBag.Title = "Index";
}
<h2>Index
</h2>
@model MvcUsandoPost.Models.Usuario
<form action="../Home/MuestraDatos" method="POST"><label for="login">login:
</label>
<input type="text" name="login" value="@(Model!=null ? Model.login : string.Empty)" /><label for="password">clave:
</label>
<input type="text" name="password" />
<input type="submit" value="enviar" />
</form>

Fijate muy bien, primero hemos llamado a nuestro modelo Usuario:
@model MvcUsandoPost.Models.Usuario
Y le hemos dicho al formulario que envié los datos al controlador Home he invoque a la acción llamada: MuestraDatos Pero como te estarás preguntando: ¿Y donde en que momento he creado yo esa accion? Pues aun no la hemos creado, pero vamos hacerlo:
Vamos a nuestro controlador llamado: HomeController Ahora bien, lo primero que necesitamos hacer es incluir en los usings a nuestro modelo llamado Usuario. Es decir:
using MvcUsandoPost.Models;
Ahora observemos que tenemos ya una accion llamada Index, la cual invoca a la vista llamada con el mismo nombre, vista que nosotros hemos creado, bien, pues la accion es esta:
public ActionResult Index()
{
return View();
}
Nosotros vamos a crear otra accion llamada: MuestraDatos diacha accion la vamos a colocar justo de bajo de esta. El código es el siguiente:
public ActionResult MuestraDatos(Usuario usuario)
{
if (string.IsNullOrEmpty(usuario.login) ||
string.IsNullOrEmpty(usuario.password))
{
ViewBag.Error = "Login o password no pueden estar vacíos";
return View(usuario);
}
return View(usuario);
}
Todo el codigo se puede ver en la siguiente imagen:

Pero como nos damos cuenta, esta acción lo que retorna son los datos a la vista, es decir, primero ingresamos los datos en la vista index, la cual envia estos datos ala acción MuestraDatos
y la esta acción regresara estos datos a la vista llamada con el mismo nombre (MuestraDatos.)
Esta vista no existe todavía Así que vamos a crearla:
Ubicamos el directorio View -> Home. Dentro de este se encuentra la vista llamada Index. Damos clic derecho en el directorio Home -> Agregar -> View La nombraremos como hemos dicho antes: MuestraDatos y damos clic en OK.
Listo, ya estando aqui, lo que tenemos que hacer es invocar nuevamente a nuestro modelo llamado Usuario y posteriormente ya podremos acceder directamente a sus valores:

Ahora corremos nuestro proyecto con F5.
En pantalla nos pide los datos:


Y listo :) Espero no se me haya pasado nada, de cualquier forma abajo dejo el link de descarga de este proyecto.
Nota: Para efectos didácticos y de mejor compresion yo he creado los formularios con etiquetas HTML pero una mejor practica es crear formarios a partir de Helpers los cuales ahorran mucho codigo :)
Descarga proyecto:
Descarga