MVC4 Web Api没有序列化我的课程

时间:2012-04-12 15:31:48

标签: asp.net-mvc-4 asp.net-web-api

为了测试一些Knockout.js功能,我开发了一个非常简单的WebApi。 IMO应该可以正常工作,但是当我通过Fiddler向Api发出GET请求时,它根本不会返回任何JSON。

我正在使用MVC4的JSON默认序列化程序。

这是我的模特......

public class Page
{
    public string Name { get; set; }
    public List<Control> 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);
    }
}

...这是我的控制器...

public class PageController : ApiController
{
    static readonly ISimplePageRepository _repository = new TestPageRepository();

    // GET /api/page
    public IEnumerable<Page> GetAllPages()
    {
        return _repository.GetAll();
    }
}

...以防万一,这是我的回购......

public class TestPageRepository : ISimplePageRepository
{
    private List<Page> _pages = new List<Page>();

    public TestPageRepository()
    {
        Add(new Page {Name = "pagina1", Controls = new List<Control>() {new Datagrid() {Name = "laTablita"}}});
        Add(new Page {Name = "pagina2", Controls = new List<Control>() {new Form() {Name = "elFormito"}}});
    }

    public Page Add(Page item)
    {
        _pages.Add(item);
        return item;
    }

    public IEnumerable<Page> GetAll()
    {
        return _pages.AsQueryable();
    }
}

提前致谢!

1 个答案:

答案 0 :(得分:1)

我将默认的序列化程序更改为JSON.NET并且它有效。显然,问题在于默认的序列化程序和抽象的Control类。