¿Por qué la vinculación de modelo no funciona en mi método de acción POST?

Tengo un problema realmente extraño con MVC. Mis modelos siguen siendo enviados vacíos. Y probablemente sea realmente simple, pero simplemente no puedo encontrar el problema.

Mi modelo se ve así:

public class LoginModel { public string Username; public string Password; } 

Mi controlador así:

 [HttpGet] public ActionResult Login() { return View(); } [HttpPost] public ActionResult Login(LoginModel loginTest) { if (loginTest.Username != "x" && loginTest.Password != "y") { ModelState.AddModelError("a", "Login failed."); return View(loginTest); } else { return RedirectToAction("Home", "Welcome"); } 

}

Y la vista también es muy simple, así.

 @model LoginSolution.Models.LoginModel @{ Layout = null; }    Login   @using (Html.BeginForm("Login", "Home")) { 
Username : @Html.EditorFor(model => model.Username)
Password : @Html.EditorFor(model => model.Password)
@Html.ValidationSummary()
}

Esta no es una pregunta acerca de la seguridad o las mejores prácticas. Esta es solo una pregunta con respecto a por qué el modelo sigue regresando como vacío al enviarlo.

Su modelo contiene campos, no propiedades (no getter / setter) por lo que la carpeta de modelo no puede establecer los valores. Cambia tu modelo a

 public class LoginModel { public string Username { get; set; } public string Password { get; set; } }