title: How does ASP.NET MVC know how to fill your model to feed your Controller's Action? Does it involve reflection?
body: <p>Having defined a <code>Model</code></p>
  
  <pre><code>public class HomeModel {
      [Required]
      [Display(Name = "First Name")]
      public string FirstName { get; set; }
  
      [Required]
      [Display(Name = "Surname")]
      public string Surname { get; set; }
  }
  </code></pre>
  
  <p>and having the following <code>Controller</code></p>
  
  <pre><code>public class HomeController : Controller {
      [HttpPost]
      public ActionResult Index(HomeModel model) {
          return View(model);
      }
  
      public ActionResult Index() {
  
          return View();
      }
  }
  </code></pre>
  
  <p>by some "magic" mechanism <code>HomeModel model</code> gets filled up with values by ASP.NET MVC. Does anyone know how?</p>
  
  <p>From some rudimentary tests, it seems it will look at the POST response and try to match the response objects name with your Model's properties. But to do that I guess it must use reflection? Isn't that inheritably slow?</p>
  
  <p>Thanks</p>