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 并手动处理数据绑定。
我已经阅读并尝试了 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 并手动处理数据绑定。