title: Using [FromUri] attribute - bind complex object with nested array
body: <p>I want to send a complex object with a nested array <strong>in the uri</strong> to an MVC action method in a GET request.</p>
  
  <p>Consider the following code:</p>
  
  <pre><code> public ActionResult AutoCompleteHandler([FromUri]PartsQuery partsQuery){ ... }
  
   public class PartsQuery
   {
       public Part[] Parts {get; set; }
       public string LastKey { get; set; }
       public string Term { get; set; }
   }
  
   $.ajax({ 
      url: "Controller/AutoCompleteHandler", 
      data: $.param({                                        
                        Parts: [{ hasLabel: "label", hasType: "type", hasIndex : 1 }],
                        LastKey : "Last Key",
                        Term : "Term"                             
                     }),
      dataType: "json", 
      success: function(jsonData) { ... }
   });
  </code></pre>
  
  <p>This works just fine and binds correctly using the default model binder <strong>in MVC Web Api</strong>.</p>
  
  <p>However, switch this to plain MVC not WebApi and the default model binder breaks down and cannot bind the properties on objects in the nested array:</p>
  
  <p><strong>Watch List</strong></p>
  
  <pre><code>partsQuery      != null          //Good
  --LastKey       == "Last Key"    //Good
  --Term          == "Term"        //Good
  --Parts[]       != null          //Good
  ----hasLabel    == null          //Failed to bind
  ----hasType     == null          //Failed to bind
  ----hasIndex    == 0             //Failed to bind
  </code></pre>
  
  <p>I would like to know why this breaks down in plain MVC and how to make <code>FromUriAttribute</code> bind this object correctly in plain MVC</p>