I am currently facing this issue after upgrading from .net core 2.2 to .net core 3.1 [FromBody] always receives null from ajax post request.
I have tried to add this code in startup but still it doesn't work
services.AddControllers()
.AddJsonOptions(options =>
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
=========================================================================================== ASP.NET CORE MEHTOD API _CreateOrEditLeave
[HttpPost]
public async Task<JsonResult> _CreateOrEditLeave([FromBody] LeaveRegistrationViewModel leaveRegistrationViewModel)
{
if (leaveRegistrationViewModel.LeaveRegistrationView.Id > 0) { leaveRegistrationViewModel.LeaveRegistrationView.UpdatedBy = userId; }
else { leaveRegistrationViewModel.LeaveRegistrationView.CreatedBy = userId; }
if (!string.IsNullOrEmpty(leaveRegistrationViewModel.LeaveRegistrationView.LeaveStartDateText))
{
leaveRegistrationViewModel.LeaveRegistrationView.LeaveStartDate = eweHelper.StringToDateTime(leaveRegistrationViewModel.LeaveRegistrationView.LeaveStartDateText);
}
if (!string.IsNullOrEmpty(leaveRegistrationViewModel.LeaveRegistrationView.LeaveEndDateText))
{
leaveRegistrationViewModel.LeaveRegistrationView.LeaveEndDate = eweHelper.StringToDateTime(leaveRegistrationViewModel.LeaveRegistrationView.LeaveEndDateText);
}
var result = await leaveRegistrationManager.SaveAsync(leaveRegistrationViewModel.LeaveRegistrationView, leaveRegistrationViewModel.StaffIds);
return Json(result.IsSuccess);
}
============================================================================================ **AXJAX POST Method **
function SubmitCrearteOrEditLeave(form) {
// validate
$.validator.unobtrusive.parse(form);
if ($(form).valid()) {
var data = ConverformToObject($(form).serializeArray());
StaffIds = $("#StaffSelect").val();
var LeaveRegistrationView = {
Id: data.Id,
LeaveStartDateText: data.LeaveStartDateText,
LeaveEndDateText: data.LeaveEndDateText,
LeaveTypeId: data.LeaveTypeId,
LeaveReason: data.LeaveReason
};
var data = { StaffIds: StaffIds, LeaveRegistrationView: LeaveRegistrationView };
$.ajax({
type: 'POST',
url: "/LeaveRegistration/_CreateOrEditLeave",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (success) {
if (success) {
GetData();
SwalAlertOk('success', SavedSuccessfully, '', function () {
$('#LeavRegistration .close').click();
});
}
$('#LeavRegistration .close').click();
}
});
}
return false;
}