cliente javascript vainilla (traté de hacerlo con axios/ajax/fetch)
const myForm = document.getElementById("myForm"); myForm.addEventListener("submit", (e) => { debugger; var name = document.getElementById("errorInput").value; var description = document.getElementById("errorDescriptionInput").value; var date = document.getElementById("errorDateInput").value; var mail = document.getElementById("senderEmailInput").value; var file = document.getElementById('fileInput').files[0]; var formData = new FormData(); formData.append('fileInput', file); const error = { ErrorName: name, ErrorDescription: description, ErrorSubmittedDate: date, SenderEmail: mail, Documents: formData, } axios.post("https://localhost:44310/api/Error/senderror","sendFile", error, { "Content-Type": "multipart/form-data", "Content-Type": "application/json", }) })API del controlador .net
[EnableCors("policy")] [HttpPost] [Route("senderror")] public async Task<IActionResult> HandleError([FromForm]ErrorModel error) { return Ok(); }El depurador del navegador muestra que el modelo contiene los valores, pero los datos que llegan al controlador son nulos. ¡Gracias por toda la ayuda!
Está enviando su archivo en formdata dentro de su objeto de error y en la API que ha aplicado
[FromForm]por lo tanto, el servidor espera los datos en forma y está enviando un objeto que contiene datos de forma. Creo que si agrega todos los datos en formdata, entonces funcionaría porque su API está esperando datos en formdata. Cámbielo así
const myForm = document.getElementById("myForm"); myForm.addEventListener("submit", (e) => { debugger; var name = document.getElementById("errorInput").value; var description = document.getElementById("errorDescriptionInput").value; var date = document.getElementById("errorDateInput").value; var mail = document.getElementById("senderEmailInput").value; var file = document.getElementById('fileInput').files[0]; var formData = new FormData(); error.append('ErrorName', name); error.append('ErrorDescription', description); error.append('ErrorSubmittedDate', date); error.append('SenderEmail', file); error.append('Documents', mail); axios.post("https://localhost:44310/api/Error/senderror","sendFile", error, { "Content-Type": "multipart/form-data", }) })tienes que configurar
"Content-Type": "multipart/form-data",