繁体   English   中英

Ajax .NET Core MVC send JSON Array to Controller using Ajax

[英]Ajax .NET Core MVC send JSON Array to Controller using Ajax

我正在尝试通过Columns将表中的数据发送到Controller,但是我尝试了很多方法,参数table始终是null。 您能否就此提供一些建议? 谢谢

前端代码

var data = {
        "Peril": histLossesTable.getDataAtCol(0),
        "OccurrenceYear": histLossesTable.getDataAtCol(1),
        "Month": histLossesTable.getDataAtCol(2),
        "Event": histLossesTable.getDataAtCol(3),
        "InsuredLoss": histLossesTable.getDataAtCol(4),
        "UnderWriterYear": histLossesTable.getDataAtCol(6),
        "ReturnPeriod": histLossesTable.getDataAtCol(5),
        "SelectedIndex": histLossesTable.getDataAtCol(7),
        "TrendedLoss": histLossesTable.getDataAtCol(8),
        "ReportingThreshold": document.getElementById('reportingThreshold').value
    };
    console.log(JSON.stringify(data));

$.ajax({
        type: "POST",
        url: "/home/test",
        dataType: "json",
        data: JSON.stringify(data),
        contentType: "application/json; charset=utf-8",
        success: function (e) {
            if (e.success == true) {
                console.log('POST Successful');
            }
            else {
                console.log('POST Failed');
            }
        }
    })

console.log(JSON.stringify(数据))

{"Peril":["BF","BF"],"OccurrenceYear":["2014","2016"],"Month":["1","1"],"Event":["",""],"InsuredLoss":["10020623.440000998","5370632.38"],"UnderWriterYear":["2013","2015"],"ReturnPeriod":[12,12],"SelectedIndex":["1.801998974252194","1.6036056232964842"],"TrendedLoss":["18057153.16024929","8612376.28522618"],"ReportingThreshold":""}

Model

public class HistoricalLossTable
    {
        public String[] Peril { get; set; }

        public int[] OccurrenceYear { get; set; }

        public int[] Month { get; set; }

        public String [] Event { get; set; }

        public double[] InsuredLoss { get; set; }

        public int[] UnderWriterYear { get; set; }

        public double[] ReturnPeriod { get; set; }

        public double[] SelectedIndex { get; set; }

        public double[] TrendedLoss { get; set; }

        public double ReportingThreshold { get; set; }
    }

和 Controller

[HttpPost]
public IActionResult test([FromBody]HistoricalLossTable table)
{
    return View();
}

正如 derloopkat 在评论中所说,您不应将数字字段设为字符串。 尝试转换您的有效载荷,如下所示:

{
"Peril":[
    "BF",
    "BF"
],
"OccurrenceYear":[
    2014,
    2016
],
"Month":[
    1,
    1
],
"Event":[
    "",
    ""
],
"InsuredLoss":[
    10020623.440000998,
    5370632.38
],
"UnderWriterYear":[
    2013,
    2015
],
"ReturnPeriod":[
    12,
    12
],
"SelectedIndex":[
    1.801998974252194,
    1.6036056232964842
],
"TrendedLoss":[
    18057153.16024929,
    8612376.28522618
]
}

我会建议尝试根据您的 json 输入字符串并添加构造函数来初始化数组(很奇怪但可能是一个问题)。 尝试:

public class HistoricalLossTable
{
    public string[] Peril { get; set; }

    public string[] OccurrenceYear { get; set; }

    public string[] Month { get; set; }

    public string[] Event { get; set; }

    public string[] InsuredLoss { get; set; }

    public string[] UnderWriterYear { get; set; }

    public string[] ReturnPeriod { get; set; }

    public string[] SelectedIndex { get; set; }

    public string[] TrendedLoss { get; set; }

    public string ReportingThreshold { get; set; }

    public HistoricalLossTable()
    {
        Peril = new string[2];
        OccurrenceYear = new string[2];
        Month = new string[2];
        Event = new string[2];
        InsuredLoss = new string[2];
        UnderWriterYear = new string[2];
        ReturnPeriod = new string[2];
        SelectedIndex = new string[2];
        TrendedLoss = new string[2];
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM