我正面临这个问题。我在文件js中有此嵌套模型]
var request={
idCliente:form.idCliente,
appUserId:user.data.id,
idFiliale:user.data.idFiliale,
idSuggeritore:form.idSuggeritore,
contrattoLuceRequest:{
numeroContratto:form.contratti[0].numeroContratto,
idTipoContratto:form.contratti[0].idTipoContratto,
idTipoOperazione:form.contratti[0].idTipoOperazione,
idStatoContratto:form.contratti[0].idStatoContratto,
note:form.contratti[0].note,
numeroPod:form.contratti[0].contrattoLuce.numeroPod,
allegati:form.contratti[0].allegatiContratto
},
formFiles:form.contratti[0].allegatiContratto
}
对象“ contrattoLuceRequest”的“ [属性” allegati”和对象“ request”的“ formFiles”是使用组件Material Ui Dropzone上传的文件的集合。我必须将此模型发送到我的.net core 2.2 Web API后端。这是我用来构建formData对象的服务。对于此测试,我忽略了其他属性...我仅将测试的重点放在“ formFiles”和“ allegati”属性上。let f = new FormData();
for (var key2 in interazione.contrattoLuceRequest.allegati) {
f.append("formFiles", interazione.contrattoLuceRequest.allegati[key2]);
}
for (var key3 in interazione.contrattoLuceRequest.allegati) {
f.append("interazione.contrattoLuceRequest.allegati",
interazione.contrattoLuceRequest.allegati[key3]);
}
我使用axios将所有内容发送到服务器
axios.post('/Interazioni',f,{ headers:{ 'Content-Type':'multipart/form-data' } }).then(response => { resolve(response); }).catch(err=>{ return reject(err); })
这是.net core 2.2 Web API
[HttpPost] public async Task<IActionResult> AddInterazione([FromForm] InterazioneRequest interazioneRequest) { try { if (interazioneRequest == null) return BadRequest(); await this.interazioniService.AddInterazione(interazioneRequest); return Ok(); } catch (ArgumentException ex) { return StatusCode(409, ex.Message); } catch (Exception ex) { return StatusCode(500, ex.Message); } }
这是服务器模型“ InterazioneRequest”
public class InterazioneRequest { public int? Id { get; set; } public int IdCliente { get; set; } public int AppUserId { get; set; } public int IdFiliale { get; set; } public int? IdSuggeritore { get; set; } public ContrattoLuceRequest ContrattoLuceRequest { get; set; } public ContrattoGasRequest ContrattoGasRequest { get; set; } public ContrattoDualRequest ContrattoDualRequest { get; set; } public ContrattoMultiEleRequest ContrattoMultiEleRequest { get; set; } public ContrattoMultiGasRequest ContrattoMultiGasRequest { get; set; } public IFormFileCollection formFiles { get; set; } }
这是“ ContrattoLuceRequest”模型,用于我们的测试用例
public class ContrattoLuceRequest { public int? Id { get; set; } public string NumeroContratto { get; set; } public string NumeroPod { get; set; } public int IdStatoContratto { get; set; } public int IdTipoContratto { get; set; } public int IdTipoOperazione { get; set; } public string Note { get; set; } public IFormFileCollection Allegati { get; set; } }
现在是问题。从前端我将所有数据发布到服务器,但是只有“ formFiles”是正确绑定的...对象“ ContrattoLuceRequest”的嵌套属性“ Allegati”始终为空。这是一个错误,还是我忽略了一些重要的事情?我还将在此处附加在Chrome Dev Tools上发送到服务器的请求的屏幕截图。非常感谢
for (var key3 in interazione.contrattoLuceRequest.allegati) {
f.append("interazione.contrattoLuceRequest.allegati",
interazione.contrattoLuceRequest.allegati[key3]);
}
正确的方法是删除“ interazione”级别,因为我的主要模型是“ contrattoLuceRequest”,所以正确的代码是
for (var key3 in interazione.contrattoLuceRequest.allegati) { f.append("contrattoLuceRequest.allegati", interazione.contrattoLuceRequest.allegati[key3]); }
现在正在工作。对不起