My question is about binding in MVC. Could you please help me with it?
My controller:
public class TestController : Controller
{
//
// GET: /Test/
[HttpGet]
public ActionResult Index()
{
return View(new TestModel());
}
public ActionResult Index(TestModel test)
{
return View(test);
}
}
My View:
@model MvcApplication1.Models.TestModel
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.test) // or x.Test
<input type="submit" value="Set"/>
}
My model:
public class TestModel
{
public string test { get; set; } // or Test{get;set;}
}
The problem is connected with the name of parameter “test” in controller as I understand. I have just changed it to “model” and the binding is working. But it is not working in original state (the name of parameter is ‘test’), ‘test’ parameter is null.
Please give me understand why the binding is not working in current example. Thank you a lot!
You need an
[HttpPost]attribute on your second method. You also cannot usetestas your variable name, as it is the same name as the property of the class you’re attempting to bind to; the ModelBinder fails to determine which to use. Your code would look as follows: