2016-09-28 2 views
2

ich einen Web-Api habe Modell enthält -C# Web-API POST JSON-Daten POSTMAN Client führt immer NULL in FromBody mit

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; } 

und die Controller -

[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); 
     } 
    } 

Client-Seite, ich bin mit Postbote Chrome Erweiterung. Ich sende POST-Anfrage mit JSON-Daten in Körper. Allerdings bin ich nicht die JSON-Daten in der Steuerung immer (Einschätzungen Objekt immer NULL-Wert zeigt)

assessments object showing NULL value

In Client-Seite, ich bin Anfrage mit PostMan Chrome-Erweiterung

PostMan Client sending request

Dies sind meine JSON-Daten:

{ 
"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", 
    }] 
    } 

Ich habe auch hinzugefügt Content-Type: application/json

Bitte helfen Sie mir, dieses Problem zu lösen. Vielen Dank !

+1

Umbenennungs '„Bewertung“' auf '„Ergebnisse“' in Ihrem json – Corporalis

+0

Achten Sie darauf, den Namen Ihres Eigenschaften in JSON sind identisch mit Ihrer C# -Modellklasse. –

+0

Es hat funktioniert ..... Vielen Dank sooooo viel :) – user2781550

Antwort

1

In Ihrer Klasse Assessments Sie den Namen der Eigenschaft, die die Liste der AssessmentResult enthält „Ergebnisse“, aber wenn Sie die Post schicken Sie die Eigenschaft sind die Benennung „Beurteilung“ sollte es sein „Ergebnisse(betrachtet haben Sie die Standard-Serializer Konfiguration zB: keine propertie Namen Kamel Fall zu senken, wenn die Serialisierung)

Versuchen:

{ 
    "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", 
       }] 
} 

auch als eine gute Praxis Sie Instanz sollte die Liste im Konstruktor Ihrer Klasse ZB:

public class Assessments 
{ 
    public Assessments() 
    { 
     Results = new List<AssessmentResult>(); 
    } 
    public List<AssessmentResult> Results { get; set; } 
} 
Verwandte Themen