【问题标题】:WebAPI modelbinding to complex type containing list of complex types - from bodyWeb API 模型绑定到包含复杂类型列表的复杂类型 - 从正文
【发布时间】:2015-02-10 01:56:25
【问题描述】:

我已经阅读并尝试过 thisthis 并继续转圈。

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

使用 AngularJS 将包含复杂类型列表的复杂类型发布到我的 web api。帖子正文如下:

我要绑定的复杂类型是:

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;
    }
}

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

谢谢!

【问题讨论】:

  • 如果其他人有同样的问题,答案似乎是知道的。我很想知道其他情况。

标签: asp.net angularjs asp.net-web-api model-binding complextype


【解决方案1】:

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

【讨论】:

  • 您是否有“不幸的是,模型绑定器无法绑定到包含复杂类型列表的复杂类型”语句的参考?我正在尝试实现同样的目标,但很惊讶它在 WebApi 中是不可能的,因为它在 ASP.NET MVC 中完全受支持。
  • 很遗憾没有,经过数周的研究并没有发现任何东西,我才得出这个结论。我发现了几个模型绑定器类被扩展来处理自定义功能的场景,如果你愿意我可以为你挖掘这些。
  • 如果您能分享您的发现,我们将不胜感激。
猜你喜欢
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
相关资源
最近更新 更多