title: How to gain control over model binding?
body: <p>I started using MVC recently and I'm getting little disappointed. Instead of helping me, the framework is getting in my way.</p>
  
  <p>I'm trying to write a controller action like this (pseudo code)</p>
  
  <pre><code>ActionResult Save(long id, string whichForm)
  {
      if (whichForm == "A")
      {
          var vm = CreateModel(Request.Form);
          if (!TryValidate(vm))
              return View(vm);
          else
              return RedirectToRoute("Success");
      }
      else ....
  }
  </code></pre>
  
  <p>Basically I'd like to have control over when my view-model is constructed and when it is validated. Is this possible? How can I implement CreateModel method? Consider I may want to create several different view-models within this controller action.</p>
  
  <p>*Rant: I don't really understand why view-model binding and validation are mixed together in DefaultModelBinder. Seems like code smell. Specially when it's hard to override this behaviour.</p>