2015-10-27 61 views
4

我试图回发一个数据对象(WorkOrders),以JSON格式的列表到我的Webapi控制器,这工作非常好,除了数据对象参数的轻微缺陷savemodel)在它遇到webapi控制器时为空。 这是从JS剪断(时隙是模拟数据)Webapi参数是空的方法

var slots = [];  
      slots.push({ 'WorkOrder': 'XX21', 'OrderDate': '2015-10-11 00:00:00', 'Slot': '1', 'SageRef': 'HS11' }); 
      slots.push({ 'WorkOrder': 'XX22', 'OrderDate': '2015-10-12 00:00:00', 'Slot': '2', 'SageRef': 'HS12' }) 
      slots.push({ 'WorkOrder': 'XX23', 'OrderDate': '2015-10-13 00:00:00', 'Slot': '3', 'SageRef': 'HS13' }); 
      console.log(JSON.stringify({ 'savemodel': slots })) 
      $.ajax({ 
       type: "POST", 
       url: 'http://localhost:55821/api/schedule', 
       data: JSON.stringify({ 'savemodel': slots }), 
       contentType: 'application/json; charset=utf-8'     
      }).success(function (data) { 
       $scope.$apply(function() { 
        if (data.SaveMessage.length > 0) { 
         // do something 
        } 
        else { 
         // do something else 
        } 
       }); 
      }); 

模型:

public class WorkOrderModel 
{ 
    public string WorkOrder { get; set; } 
    public string OrderDate { get; set; } 
    public string SlotNumber { get; set; } 
    public string SageRef { get; set; } 
} 

回发方法:

[HttpPost] 
     public IHttpActionResult UpdateWorkOrder([FromBody]List<WorkOrderModel> savemodel) 
     { 
      StringBuilder saveMessage = new StringBuilder(); 
      foreach (WorkOrderModel model in savemodel) 
      { 
        // save the WO model object here     
      } 
      if (saveMessage.Length > 0) 
      { 
       return Ok(new { SaveMessage = "There were issues: " + saveMessage.ToString() }); 
      } 
      else 
      { 
       return Ok(new { SaveMessage = "" }); 
      } 
     } 

Posted JSON Null parameter in the WebApi Controller 这是驾驶我坚果所以任何帮助将非常感激在这个阶段!

问候, itsdanny

+0

你能发布你的后控制器方法的片段代码 –

+0

嗨,我已经更新了原始帖子。 – ItsDanny

+0

我想你需要在你的ajax调用中设置'dataType:'json''。请参阅[AJAX和Web Api Post方法 - 它如何工作?](http://stackoverflow.com/questions/15687903/ajax-web-api-post-method-how-does-it-work)。 – dbc

回答

1

排序,它改变

数据:JSON.stringify({ 'savemodel':槽}),

数据:JSON.stringify(插槽),