Web API 模型绑定到包含复杂类型列表的复杂类型 - 来自正文

WebAPI modelbinding to complex type containing list of complex types - from body

我已经阅读并尝试了 this and this 并且一直在兜圈子。

Edit:客户端正在发送它接收到的模型,服务器根据下面列出的 类 构建复杂类型并将其发送给客户端,客户端发回完全相同的模型,但模型绑定器不会绑定到它。

使用 AngularJS post 将包含复杂类型列表的复杂类型添加到我的网站 api。 post正文如下:

我要绑定的复杂类型是:

public class AttendanceSelectTModel
{
    public List<AttendanceChildSelectTModel> CA { get; set; }
    public List<AttendanceChildSelectTModel> CI { get; set; }
    public bool SignIn { get; set; }

    public AttendanceSelectTModel() { }

    public AttendanceSelectTModel(List<Person> ppl)
    {
        CA = new List<AttendanceChildSelectTModel>();
        CI = new List<AttendanceChildSelectTModel>();

        foreach (Person p in ppl)
            if (p.Status == Status.SignedIn)
                CA.Add(new AttendanceChildSelectTModel(p));
            else
                CI.Add(new AttendanceChildSelectTModel(p));
    }
}

public class AttendanceChildSelectTModel
{
    public string Name { get; set; }
    public int PId { get; set; }
    public string ImgURL { get; set; }

    public AttendanceChildSelectTModel() { }

    public AttendanceChildSelectTModel(Person user)
    {
        Name = user.FirstName;
        PId = user.PersonId;
        ImgURL = user.ImgURL;
    }
}

你能给我指出正确的方向吗?我正在尝试做的事情是否可行,或者我是否可以不绑定到复杂类型列表?

谢谢!

不幸的是,Model Binder 无法绑定到包含复杂类型列表的复杂类型。我的解决方案是将复杂类型分解为一个简单的变量列表,这不是很好,因为我使用的是 angularJs。另一种解决方案是扩展模型绑定器 class 并手动处理数据绑定。