我正在向我的控制器传递JSON中的对象列表,通信似乎正在工作,但我正在传递的进入我的控制器的数据是空的。我已经搜索了这么多不同的职位,都指向类似的问题,我已经调整和尝试不同的方法。这是我的JS代码:
$('form').submit(function (e) {
e.preventDefault();
var dentalCaseList = {
DentalCases: []
};
$("tr[class*=dentalCase]").each(function (index, e) {
let dentalCase = {
Date: "",
UnitCount: 0,
UnitType: "",
Name: "",
FullPath: "",
};
dentalCase.Name = $(this).find(".unitName").html(),
dentalCase.UnitType = $(this).find(".select-unit").val(),
dentalCase.UnitCount = parseInt($(this).find(".unitCount").html())
dentalCaseList.DentalCases.push(dentalCase);
});
var myJsonString = JSON.stringify(dentalCaseList);
$.ajax({
type: "POST",
url: "/DentalCase/GenerateReport",
dataType: "json",
data: JSON.stringify(dentalCaseList),
contentType: "application/json; charset=utf-8",
success: function (result) {
console.log('Data received: ');
console.log(result);
}
})
});
字符串
这是我的控制器:
using DentalManager.Model;
using Microsoft.AspNetCore.Mvc;
namespace DentalManager.Controllers
{
public class DentalCaseController : Controller
{
[HttpPost]
public JsonResult GenerateReport([FromBody] DentalCaseList dentalCaseList)
{
//Creating List
List<DentalCase> ObjEmp = new List<DentalCase>()
{
//Adding records to list
new DentalCase {Name="Testing Tester",UnitCount=1,UnitType=UnitType.Default },
new DentalCase {Name="Banana",UnitCount=2,UnitType=UnitType.Default }
};
//return list as Json
return Json(ObjEmp);
}
}
}
型
dentalCaseList传入null
这是我的模型:
namespace DentalManager.Model
{
public class DentalCase
{
[JsonPropertyName("Date")]
public DateTime? Date { get; set; }
[JsonPropertyName("UnitCount")]
public int UnitCount { get; set; }
[JsonPropertyName("UnitType")]
public UnitType UnitType { get; set; }
[JsonPropertyName("Name")]
public string? Name { get; set; }
[JsonPropertyName("FullPath")]
public string? FullPath { get; set; }
}
public enum UnitType
{
Default = 0,
FullDesign = 1,
Implant = 2
}
public class DentalCaseList
{
public List<DentalCase> DentalCases { get; set; }
}
}
型
我已经尝试了名称更改,包括FromBody属性,JsonPropertyName属性,删除可空类型,双重和三重检查属性名称。我只是不明白我错过了什么。我很抱歉,如果这是一个贫穷的职位,这是我的第一个。但我只是在挣扎,我觉得我错过了一些愚蠢的事情。
1条答案
按热度按时间zsbz8rwp1#
你必须在Json.Text序列化器中添加一个枚举序列化器。修复您的启动代码
字符串
并且您的json字符串具有Date:“",这对于此属性无效
型
修复json字符串Date:null,或将Date属性更改为string,或为Date属性创建自定义序列化程序