Creé un formulario. Estoy enviando los datos en este formulario como JSON.
Si solo envío formData ( también cambio el controlador a [FromBody] Image request ) y configuro contentType y processData en falso, formData no es nulo.
Creo que "documento" devuelve nulo porque estoy enviando los datos como JSON. ¿Cómo puedo resolver este problema? Estoy atascado en este problema.
Solicitud de Ajax
let myProfile = { id: 0, title: "", text: "", document: File, }; myProfile.title = "Lorem ipsum"; myProfile.text = "Lorem ipsum"; var formData = new FormData(); formData.append('file', $('#file').get(0).files[0]); formData.append('fileName', $("#fileName").val()); var myFile = formData.get('file'); myProfile.document = myFile; $.ajax({ url: `/admin/myprofile`, type: "POST", data: JSON.stringify(myProfile), contentType: "application/json", dataType: 'json', success: ....Cshtml
<div class="form-group"> <input type="file" name="document" asp-for="document" id="file" /> </div>Controlador
[HttpPost("myprofile")] public IActionResult MyProfile([FromBody] MyProfileDTO request) { return ... }Clase
public class Image { public IFormFile file { get; set; } public string fileName { get; set; } } public class MyProfileDTO { public string Title { get; set; } public string Text { get; set; } public Image Document{ get; set; } }Solicitud de Ajax
let myProfile = { id: 0, title: "", text: "", document: File, }; myProfile.title = "Lorem ipsum"; myProfile.text = "Lorem ipsum"; var formData = new FormData(); formData.append('file', $('#file').get(0).files[0]); formData.append('title', myProfile.title); formData.append('text', myProfile.text); $.ajax({ url: `/admin/myprofile`, type: "POST", data: formData , contentType: "application/json", success: ....Controlador
[HttpPost("myprofile")] public IActionResult MyProfile([FromBody] MyProfileDTO request, IFormFile file) { return ... }Clase
public class MyProfileDTO { public string Title { get; set; } public string Text { get; set; } }