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
你能發佈你的後控制器方法的片段代碼 –
嗨,我已經更新了原始帖子。 – ItsDanny
我想你需要在你的ajax調用中設置'dataType:'json''。請參閱[AJAX和Web Api Post方法 - 它如何工作?](http://stackoverflow.com/questions/15687903/ajax-web-api-post-method-how-does-it-work)。 – dbc