title: TryValidateModel not assigning object, returning all nulls, MVCStore Example
body: <p>In the Checkout Controller I have the code </p>
  
  <pre><code>    [HttpPost]
      public ActionResult AddressAndPayment(FormCollection values)
      {
          var order = new Order();
          TryValidateModel(order);
       ....
  </code></pre>
  
  <p>The model looks like this </p>
  
  <pre><code>[Bind(Exclude="OrderId")]
  public partial class Order
  {
      [ScaffoldColumn(false)]
      public int OrderId { get; set; }
  
      [ScaffoldColumn(false)]
      public string Username { get; set; }
  
      [Required(ErrorMessage= "First Name is required")]
      [DisplayName("First Name")]
      [StringLength(160)]
      public string FirstName { get; set; }
  
      [Required(ErrorMessage = "Last Name is required")]
      [DisplayName("Last Name")]
      [StringLength(160)]
      public string LastName { get; set; }
  
      [Required(ErrorMessage="Address is required")]
      [StringLength(70)]
      public string Address { get; set; }
  
      [Required(ErrorMessage = "City is required")]
      [StringLength(40)]
      public string City { get; set; }
  
      [Required(ErrorMessage = "State is required")]
      [StringLength(40)]
      public string State { get; set; }
  
      [Required(ErrorMessage = "Postal Code is required")]
      [DisplayName("Postal Code")]
      [StringLength(10)]
      public string PostalCode { get; set; }
  
      [Required(ErrorMessage="Country is required")]
      [StringLength(40)]
      public string Country { get; set; }
  
      [Required(ErrorMessage= "Phone is required")]
      [StringLength(24)]
      public string Phone { get; set; }
  
      [Required(ErrorMessage="Email Address is required")]
      [DisplayName("Email Address")]
      [RegularExpression(@"[A-za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", ErrorMessage="Email is not valid.")]
      [DataType(DataType.EmailAddress)]
      public string Email { get; set; }
  
      [ScaffoldColumn(false)]
      public decimal Total { get; set; }
  
      [ScaffoldColumn(false)]
      public DateTime OrderDate { get; set; }
      public List&lt;OrderDetail&gt; OrderDetails { get; set; }
  }
  </code></pre>
  
  <p>I can stop right before the TryValidateModel line and look at form values like </p>
  
  <pre><code>? Request.Form["FirstName"]
   "Michael"
   ? values["FirstName"]
     "Michael"
  </code></pre>
  
  <p>So why does TryValidateModel(order); return false and the order object does not get populated?  </p>
  
  <p><strong>Update</strong>
  To clarify my question I know false means it can not bind but I do not know why it can not bind.  Or that it should through the TryValidateModel(or even the ValidateModel)</p>
  
  <p>But what is interesting is that if I change my method signature to </p>
  
  <pre><code> public ActionResult AddressAndPayment(Order order)
  </code></pre>
  
  <p>order gets populated correctly.  So if it is able to bind in the Method call why not TryValidateModel(or even the ValidateModel)?</p>
  
  <p>I am using MVC 4</p>