title: MVC4 Web Api doesn't serialize my class
body: <p>I've developed a very simple WebApi in order to test some Knockout.js features. IMO it should work properly, but when I make a GET request to the Api via Fiddler, it doesn't return any JSON at all. </p>
  
  <p>I'm using MVC4's JSON default serializer.</p>
  
  <p>This is my model...</p>
  
  <pre><code>public class Page
  {
      public string Name { get; set; }
      public List&lt;Control&gt; Controls { get; set; }        
  }
  
  public abstract class Control
  {
      public string Name { get; set; }
      public abstract string SayHi();
  }
  
  public class Form : Control
  {
      public override string SayHi()
      {
          return string.Format("Hi, I'm form {0}", Name);
      }
  }
  
  public class Datagrid : Control
  {
      public override string SayHi()
      {
          return string.Format("Hi, I'm datagrid {0}", Name);
      }
  }
  </code></pre>
  
  <p>...here is my Controller...</p>
  
  <pre><code>public class PageController : ApiController
  {
      static readonly ISimplePageRepository _repository = new TestPageRepository();
  
      // GET /api/page
      public IEnumerable&lt;Page&gt; GetAllPages()
      {
          return _repository.GetAll();
      }
  }
  </code></pre>
  
  <p>...and just in case, this is my repo...</p>
  
  <pre><code>public class TestPageRepository : ISimplePageRepository
  {
      private List&lt;Page&gt; _pages = new List&lt;Page&gt;();
  
      public TestPageRepository()
      {
          Add(new Page {Name = "pagina1", Controls = new List&lt;Control&gt;() {new Datagrid() {Name = "laTablita"}}});
          Add(new Page {Name = "pagina2", Controls = new List&lt;Control&gt;() {new Form() {Name = "elFormito"}}});
      }
  
      public Page Add(Page item)
      {
          _pages.Add(item);
          return item;
      }
  
      public IEnumerable&lt;Page&gt; GetAll()
      {
          return _pages.AsQueryable();
      }
  }
  </code></pre>
  
  <p>Thanks in advance!</p>