title: Server action never invoked - JSON deserialization failure?
body: <p>I have simple action in my controller:</p>
  
  <pre><code>[HttpPost]
  public JsonResult Action(MenuSet menuSet)
  {
     //...
  }
  </code></pre>
  
  <p>where <code>MenuSet</code> is:</p>
  
  <pre><code>public class MenuSet
  {      
      private IEnumerable&lt;MenuEntry&gt; _menuEntries;
  
      public IEnumerable&lt;MenuEntry&gt; MenuEntries
      {
          get { return _menuEntries; }
          set { _menuEntries = value; }
      }
  }
  
  public class MenuEntry
  {
      private string _parentPageName;
      private IEnumerable&lt;string&gt; _orderedPages;
  
      public string ParentPageName
      {
          get { return _parentPageName; }
          set { _parentPageName = value; }
      }
      public IEnumerable&lt;string&gt; OrderedPages
      {
          get { return _orderedPages; }
          set { _orderedPages = value; }
      }
  }
  </code></pre>
  
  <p>From the client side, I'm invoking this action in the way below:</p>
  
  <pre><code>$.post("Controller/Action", 
         $.param({ MenuEntries: prepareData() }, true), 
         null, 
         "json");
  </code></pre>
  
  <p>where <code>prepareData()</code> function returns <code>MenuEntries</code> collection:</p>
  
  <pre><code>function prepareData() {
      var menuEntries = new Array();
      var menuEntry = {
          ParentPageName: null,
          OrderedPages: getPagesOrder()
      }
      menuEntries.push(menuEntry);
      return menuEntries;
  }
  
  function getPagesOrder() {
      var values = new Array();
      values.push('samplePageName')
      return values;
  }
  </code></pre>
  
  <p>But the JSON object appears to be not deserialized to the model at the server side - the controller action is never invoked. How to make this work ?</p>