【问题标题】:Webapi parameter is null on Method方法上的 Webapi 参数为空
【发布时间】:2016-01-27 03:52:54
【问题描述】:

我正在尝试以 JSON 格式将数据对象列表 (WorkOrders) 以 JSON 格式回传到我的 Webapi 控制器,这效果非常好,除了数据对象参数 (savemodel) 为 null 时的轻微缺陷命中 webapi 控制器。 这是来自 JS 的片段(slots 是模拟数据)

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 这让我发疯了,所以在这个阶段任何帮助都将不胜感激!

问候, 它的丹尼

【问题讨论】:

  • 你能发布你的 Post 控制器方法的 sn-p 代码
  • 嗨,我已经更新了原帖。
  • 我认为你需要在你的ajax调用中设置dataType: 'json'。见AJAX & Web Api Post Method - How does it work?
  • 感谢@dbc,但当它到达 post 方法时,我仍然得到一个空参数。我也试过 [FromUrI] 但它仍然为空。

标签: c# json ajax parameters asp.net-web-api


【解决方案1】:

排序,它改变了

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

数据:JSON.stringify(slots),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多