[英]C# web API POST JSON data using POSTMAN client results in always NULL in FromBody
我有一個包含模型的 Web Api -
public class Assessments
{
public List<AssessmentResult> Results { get; set; }
}
public class AssessmentResult
{
public int? AssessorId { get; set; }
public int? AssessmentId { get; set; }
public int? CentreId { get; set; }
public int? BatchId { get; set; }
public DateTime AssessmentDate { get; set; }
和控制器 -
[HttpPost]
[ActionName("SetAssessmentResults")]
public HttpResponseMessage SetAssessmentResults([FromBody] Assessments assessments)
{
try
{
string sproc = ConfigurationManager.AppSettings["ASSESSORAPP_InsertAssessmentsStaging"];
//_dt = Helper.ToDataTable(assessments); use this if sending list doesnt work
Mapper.Initialize(cfg =>
{
//cfg.CreateMissingTypeMaps = false;
cfg.CreateMap<AssessmentResult, AssessmentTable>().IgnoreAllNonExisting();
//cfg.IgnoreUnmapped();
});
List<AssessmentTable> assessmentTable = Mapper.Map<List<AssessmentResult>, List<AssessmentTable>>(assessments.Results);
Mapper.Configuration.AssertConfigurationIsValid();
string isSuccess = _db.InsertAssessmentResults(sproc, assessmentTable);
if (isSuccess.Split('$')[0].ToLower() == "success")
{
return Request.CreateResponse(HttpStatusCode.OK, isSuccess);
}
else if (isSuccess.Split('$')[0].ToLower() == "duplicate")
{
return Request.CreateResponse(HttpStatusCode.OK, isSuccess);
}
else
{
return Request.CreateResponse(HttpStatusCode.OK, isSuccess);
}
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
}
}
客戶端,我正在使用 Postman Chrome 擴展程序。 我正在發送帶有 JSON 數據的 POST 請求。 但是,我沒有在控制器中獲取 JSON 數據(評估對象始終顯示 NULL 值)
在客戶端,我請求使用 PostMan Chrome 擴展
這是我的 JSON 數據:
{
"assessment":
[{
"AssessorId": 3,
"AssessmentId": 123,
"CentreId": 1,
"BatchId": null,
"AssessmentDate": "2016-09-30T00:00:00",
},{
"AssessorId": 2,
"AssessmentId": 123,
"CentreId": 1,
"BatchId": null,
"AssessmentDate": "2016-09-30T00:00:00",
}]
}
我還添加了 Content-Type : application/json
請幫我解決這個問題。 謝謝 !
在您的類評估中,您將包含 AssessmentResult 列表的屬性命名為“結果”,但是當您發送帖子時,您將屬性命名為“評估”,它應該是“結果” (考慮到您具有默認的序列化程序配置,例如:沒有屬性名稱序列化時降低駝峰式大小寫)
嘗試:
{
"Results":[{
"AssessorId": 3,
"AssessmentId": 123,
"CentreId": 1,
"BatchId": null,
"AssessmentDate": "2016-09-30T00:00:00",
},
{
"AssessorId": 2,
"AssessmentId": 123,
"CentreId": 1,
"BatchId": null,
"AssessmentDate": "2016-09-30T00:00:00",
}]
}
同樣作為一個好習慣,您應該在類的構造函數中實例化列表,例如:
public class Assessments
{
public Assessments()
{
Results = new List<AssessmentResult>();
}
public List<AssessmentResult> Results { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.