【问题标题】:Http post method seen as http get methodHttp post 方法被视为 http get 方法
【发布时间】:2017-03-16 20:58:20
【问题描述】:

我有这个 javascript sn-p :

$.ajax({
                type: "Post",
                contentType: 'application/json',
                url: "../api/Pointage/GetPointages",
                 data: JSON.stringify({
                    laDate: DateConsultation,
                    lstcols: Collaborators,
                    lEquipe: equipe,
                    Type: 3,
                }),
                success: function (data) {
                    console.log(data);
                    call3(data);
                }
            });

服务方法的签名如下:

[HttpPost]
public List<ItemStatistiquesPointageMonth> GetPointages(Nullable<System.DateTime> laDate = null, List<Collaborateur> lstcols =null, Nullable<int> lEquipe = null, int Type = -1)

当我拨打电话时,服务器无法访问!

那么这个问题的原因是什么?我该如何解决?

【问题讨论】:

  • 尝试 method 而不是 type - 虽然我认为 jquery 支持两者(可能取决于 jquery 版本)
  • 这里,正如我们在 ajax 调用中看到的那样,您正在通过 body 传递数据,但在方法中不必声明任何 [FromBody] 甚至如何以这种方式传递多个参数?
  • 正如@Div 指出的那样,尝试使用这些属性创建一个模型并将其作为操作参数。
  • 可以参考this answer参考

标签: javascript c# .net asp.net-mvc asp.net-web-api


【解决方案1】:

使用您的参数创建一个模型并将其传递给您的 post 方法

[HttpPost]
public List<ItemStatistiquesPointageMonth> GetPointages([FromBody] MyModel model)

也可以使用dataType: "json"

【讨论】:

    【解决方案2】:

    创建一个反映您在客户端创建的对象的模型类

    public class dataModel
    {
        public Nullable<System.DateTime> laDate { get; set; }
        public List<Collaborateur> lstcols { get; set; }
        public Nullable<int> lEquipe { get; set; } 
        public int Type { get; set; } 
    }
    

    然后将其添加到带有FromBody属性的方法中

    [HttpPost]
    public List<ItemStatistiquesPointageMonth> GetPointages([FromBody] dataModel data){}
    

    【讨论】:

      猜你喜欢
      • 2016-12-19
      • 2020-07-19
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 2019-09-12
      相关资源
      最近更新 更多