Angularjs 使用FormData()将数组json对象发送到mvc控制器

Angularjs 使用FormData()将数组json对象发送到mvc控制器,angularjs,asp.net-mvc,Angularjs,Asp.net Mvc,我正在尝试使用angular将文件上传到mvc控制器,一切正常,我得到了文件,即使我的控制器中有DTO作为输入参数,也正常工作,所有成员都由mvc绑定,除了列表类型的成员 这是我的DTO public class UpdateMeetingInput { public Guid Id { get; set; } public string Subject { get; set; } public DateTime Date { get;

我正在尝试使用angular将文件上传到mvc控制器,一切正常,我得到了文件,即使我的控制器中有DTO作为输入参数,也正常工作,所有成员都由mvc绑定,除了列表类型的成员

这是我的DTO

 public class UpdateMeetingInput 
    {
        public Guid Id { get; set; }
        public string Subject { get; set; }
        public DateTime Date { get; set; }
        public DateTime EndTime { get; set; }
        public string Description { get; set; }
        public string Agenda { get; set; }
        public bool IsCancelled { get; set; }
        public List<AttendeeDto> Attendees {get;set;}
        public string Location { get; set; }
    }
这是我的控制器

 public class MeetingController : TransitControllerBase
    {
        private readonly IMeetingManager _meetingManager;
        private readonly IRepository<Meeting, Guid> _meetingRepository;
        private readonly IRepository<Decision> _decisionRepository;
        private readonly UserManager _userManager;


        public MeetingController (IMeetingManager meetingManager, IRepository<Meeting, Guid> meetingRepository, IRepository<Decision> decisionRepository, UserManager userManager)
        {
            _meetingManager = meetingManager;
            _meetingRepository = meetingRepository;
            _decisionRepository = decisionRepository;
            _userManager = userManager;
        }
        [HttpPost]
        public  async Task Update (UpdateMeetingInput input)
        {

我在发布数据时是否做错了什么?

这是因为您使用的是表单数据,它不是json,而是json.stringify将您的列表格式化为json,这不是model binder所期望的

要解决这个问题,您可以在模型中将与会者设置为字符串,然后在控制器中从JSON显式地反序列化它

或者,您可以尝试使用特殊语法,
attendeers[]
作为字段名(注意方括号),而不是
JSON.stringify
。像这样:

for (var i = 0; i < attendees.length; i++) {
    fd.append('attendees['+i+'][userId]', attendees[i].userId);
    fd.append('attendees['+i+'][name]', attendees[i].name);
    ....
}
for(变量i=0;i
我在控制器中从JSON显式反序列化它。
"[{\"userId\":0,\"name\":null,\"role\":\"4\",\"email\":\"someone@microsoft.com\",\"isGuest\":false,\"$$hashKey\":\"object:311\"}]"
for (var i = 0; i < attendees.length; i++) {
    fd.append('attendees['+i+'][userId]', attendees[i].userId);
    fd.append('attendees['+i+'][name]', attendees[i].name);
    ....
}