Perché Model Binding non funziona nel mio metodo di azione POST?

Ho un problema davvero strano con MVC. I miei modelli continuano a essere inviati vuoti. Ed è probabilmente molto semplice, ma non riesco a trovare il problema.

Il mio modello assomiglia a questo:

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

Il mio controller in questo modo:

 [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"); } 

}

E la vista è anche molto semplice, come questa.

 @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()
}

Questa non è una domanda sulla sicurezza o sulle migliori pratiche. Questa è solo una domanda sul perché il modello continua a restituire se stesso come vuoto al momento dell’invio.

Il modello contiene campi, non proprietà (nessun getter / setter), quindi il raccoglitore modello non può impostare i valori. Cambia il tuo modello in

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