I checked similar questions many others posted and tried different solutions with not success.
I have an asp.net core 2.2 web app (controllers, not rest-api) and I added to startup a configuration for json formatter:
AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
Into my View I do this:
function crearObjetoTramiteRequisito() {
var tramiteGeneralId = retornarItemGridTramitesGenerales().Id;
var tramitesRequisitos = [];
$.each(arrayDocumentoSeleccionado, function (index, value) {
tramitesRequisitos.push({ Id: 0, TramiteDocumentoId: value, TramiteGeneralId: tramiteGeneralId});
});
return tramitesRequisitos;
}
function guardarTramitesRequisitos() {
onCloseWindowRequisitos();
var requestData = crearObjetoTramiteRequisito();
$.ajax({
url: "@Url.Action("CrearRequisitos", "ConfiguracionTramitesGenerales")",
type: 'POST',
headers: {
"RequestVerificationToken": antiForgeryTokens()
},
dataType: 'json',
data: {'requestData': JSON.stringify(requestData) },
success: function (result) {
console.log(result);
},
error: function (e) {
console.log(e);
}
});
}
I expect a JSON array into the controller parameter.
The ViewModel:
public class TramiteRequisitoViewModel
{
public int Id { get; set; }
public int TramiteDocumentoId { get; set; }
public int TramiteGeneralId { get; set; }
}
The controller is:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult CrearRequisitos (List<TramiteRequisitoViewModel> requestData)
{
int x = 0;
The requestData parameter comes with 0 elements.
No matter if I use [FromBody] param attribute or use array JSON objects instead of stringify them, don't work, neither using contentType: "application/json; charset=utf-8"