2017-11-27 13 views
1

MVC APIで作成したメソッドを実行しようとしています。これは、JSON形式の本体を介してオブジェクトを渡す必要があります。私が知っている限り、メソッドやオブジェクトにエラーはありませんが、私が送信しているJSONは実際にはメソッドに渡されず、オブジェクトパラメータはnullのままです。オブジェクトがJSON本体からメソッドに渡されない

これはメソッドです:

// Consignment Search 
[HttpPost] 
[ResponseType(typeof(Legacy.JobTracking))] 
[Route("api/search/")] 
public IHttpActionResult SearchConsignment(ConsignmentSearch search) 
{ 
    // Get the ID 
    var UserId = 0; 
    using (_PortalDb) 
    { 
     var User = _PortalDb.PortalUsers.FirstOrDefault(u => u.ServerUser == search.User); 
     if (User != null) UserId = User.UserId; 
    } 
    List<Legacy.JobTracking> Consignments; 
    if (!ModelState.IsValid) return BadRequest("Invalid Search"); 
    if (search.JobNo == null && search.CustRef == null && search.ConRef == null && search.DateFrom == null && search.DateTo == null) return BadRequest("No search filters"); 
    if (search.JobNo != null) 
    { 
     // Run Job number search and continue 
     Consignments = Legacy.Exporter.GetJobByNo(search.JobNo, search.User, search.Account, UserId); 
    } 
    else if (search.ConRef != null) 
    { 
     // Run Con Ref Search and continue 
     Consignments = Legacy.Exporter.GetJobByCon(search.ConRef, search.User, search.Account, UserId); 
    } 
    else if (search.CustRef != null) 
    { 
     // Run Customer Ref Search and continue 
     Consignments = Legacy.Exporter.GetJobByRef(search.CustRef, search.User, search.Account, UserId); 
    } 
    else if (search.DateFrom != null && search.DateTo != null) 
    { 
     // Run Date Range Search and continue 
     Consignments = Legacy.Exporter.GetJobsInDateRange(search.DateTo, search.DateFrom, search.User, search.Account, UserId); 
    } 
    else 
    { 
     return BadRequest("Invalid Date Search"); 
    } 
    return Ok(Consignments); 
} 

クラス:体内の

public class ConsignmentSearch 
{ 
    public string JobNo; 
    public string CustRef; 
    public string ConRef; 
    public string DateFrom; 
    public string DateTo; 
    public string User; 
    public string Account; 
} 

とJSON:あなたのリクエストのボディに渡す

["consignmentSearch": { 
    "dateFrom": "20150101", 
    "dateTo": 20160101, 
    "user": "LianeS", 
    "account": "PORTAL" 
}] 

答えて

1

テキストがあります有効なJSONではありません(もちろん、モデルを表すものではありません)。あなたのケースで有効なJSONは次のようになります:

{ 
    "dateFrom": "20150101", 
    "dateTo": 20160101, 
    "user": "LianeS", 
    "account": "PORTAL" 
} 
+0

これは完璧です!ありがとう! –

関連する問題