Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.Net Web Api中类参数的属性始终为空_Asp.net_Asp.net Web Api - Fatal编程技术网

Asp.Net Web Api中类参数的属性始终为空

Asp.Net Web Api中类参数的属性始终为空,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,在我的WebAPI控制器中,有一个如下所示的操作方法 [HttpPost] [EnableCors(origins: "*", headers: "*", methods: "*", exposedHeaders: "X-Custom-Header")] public IReportOutput InsuranceHandlingFiles([FromBody]CaseCountsInputData caseCountsInputData) { } 此操作的

在我的WebAPI控制器中,有一个如下所示的操作方法

 [HttpPost]
    [EnableCors(origins: "*", headers: "*", methods: "*", exposedHeaders: "X-Custom-Header")]
    public IReportOutput InsuranceHandlingFiles([FromBody]CaseCountsInputData caseCountsInputData)
    {

    }
此操作的参数类为

[Serializable]
public class CaseCountsInputData
{
    public string MainTitle { get; set; }
    public string YearTitle { get; set; }
    public string InsurerFileCountTitle { get; set; }
    public List<FileCount> FileCounts { get; set; }
    public int InsurerTotalCount { get; set; }
    public int GrandTotal { get; set; }
    public string TotalTitle { get; set; }
    public string GrandTotalTitle { get; set; }
}

[Serializable]
public class FileCount
{
    public string year { get; set; }
    public int InsurerFilesCount { get; set; }
}
[可序列化]
公共类CaseCountsInputData
{
公共字符串mainttitle{get;set;}
公共字符串YearTitle{get;set;}
公共字符串InsureFileCountTitle{get;set;}
公共列表文件计数{get;set;}
public int InsurerTotalCount{get;set;}
public int GrandTotal{get;set;}
公共字符串TotalTitle{get;set;}
公共字符串GrandTotalTitle{get;set;}
}
[可序列化]
公共类文件计数
{
公共字符串年份{get;set;}
public int insurerfilescont{get;set;}
}
出于测试目的,我调用此API方法,如下所示。我的操作是这样调用的,我的json对象绑定到CaseCountsInputData类,但所有参数都为null。你能确切地告诉我哪里出了错吗

            $("#btnExport")
            .click(function() {
            var reportData = GetReportData();
            console.log(JSON.stringify(reportData));
                $.ajax({
                    type: "POST",
                    dataType: "json",
                    data: JSON.stringify(reportData),
                    contentType: "application/json",
                    url: "http://localhost:50773/api/export/insurancehandlingfiles",
                    success: function(data) {
                          var DocumentBody = data.Data;
                    var FileName = data.FileName;
                    dataURItoBlob(DocumentBody, FileName);
                    },
                    error: function(error,as,asd) {

                        jsonValue = jQuery.parseJSON(error.responseText);
                        alert("error" + error.responseText);
                    }
                });
            });
    });

    function GetReportData() {

        var reportModel = {
            CaseCountsInputData: {
                MainTitle: "Dosya Sayısı",
                YearTitle: "Yıl",
                InsurerFileCountTitle: "Sigortacı Dosya Sayısı",
                TotalTitle: "Toplam",
                GrandTotalTitle: "Genel Toplam",
                InsurerTotalCount: 1,
                GrandTotal: 3,
                FileCounts: []
            }
        }
        var caseCounts =[];
        caseCounts.push({
            "year": 2014,
            "InsurerFilesCount": 1
        });
          caseCounts.push({
            "year": 2015,
            "InsurerFilesCount": 4
        });
        for (var i = 0; i < caseCounts.length; i++) {
            reportModel.CaseCountsInputData.FileCounts.push(caseCounts[i]);
        }

        return reportModel;
    }
$(“btnExport”)
。单击(函数(){
var reportData=GetReportData();
log(JSON.stringify(reportData));
$.ajax({
类型:“POST”,
数据类型:“json”,
数据:JSON.stringify(reportData),
contentType:“应用程序/json”,
url:“http://localhost:50773/api/export/insurancehandlingfiles",
成功:功能(数据){
var DocumentBody=data.data;
var FileName=data.FileName;
dataURItoBlob(文档体,文件名);
},
错误:函数(错误、as、asd){
jsonValue=jQuery.parseJSON(error.responseText);
警报(“错误”+错误.responseText);
}
});
});
});
函数GetReportData(){
var报告模型={
案例数输入数据:{
主标题:“Dosya Sayısı”,
年名:“Yıl”,
保险人名称:“SigortacıDosya Sayısı”,
总标题:“托普兰”,
总标题:“Genel Toplam”,
被保险人总金额:1,
总计:3,
文件计数:[]
}
}
var案例计数=[];
推({
“年份”:2014年,
“被保险人”:1
});
推({
“年份”:2015年,
“被保险人”:4
});
对于(变量i=0;i
您的json不正确,它位于一个名为CaseCountsInputData的属性中,该属性不存在于模型的对象图中。知道json应该是什么样子的方法是通过json.net的序列化发送模型的对象图,可以手动发送,也可以通过在浏览器中观察来响应ajax请求。然后,您可以在客户端重新创建正确的json格式以发送回服务器。您可以这样做并检查var数据={main title:“Dosya Sayısı”,YearTitle:“Yıl”,InsurerFileCountTitle:“SigortacıDosya Sayısı”,TotalTitle:“Toplam”,GrandTotalTitle:“Genel Toplam”,保险公司TotalCount:1,GrandTotal:3,FileCounts:[]}请在以ajax requetdata:JSON.stringify发送时尝试将“CaseCountsInputData”(即reportModel.CaseCountsInputData)而不是reportModel本身字符串化(reportData.CaseCountsInputData)所有建议都是一样的,完全正确。谢谢大家:)