Asp.Net Web Api中类参数的属性始终为空
在我的WebAPI控制器中,有一个如下所示的操作方法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) { } 此操作的
[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)所有建议都是一样的,完全正确。谢谢大家:)