C# Webapi接收带括号的json

C# Webapi接收带括号的json,c#,angularjs,asp.net-web-api,kendo-grid,C#,Angularjs,Asp.net Web Api,Kendo Grid,我只是想了解, 我花了几天的时间试图解决一个POST操作不起作用的问题(使用WebAPI和AngularJS)。 我考虑了所有的事情,尝试,搜索,甚至修改了一千次代码。之后,我发现当JSON格式如下时,POST起作用: {"Name":"Test","Age":23} [{"Name":"Test","Age":23}] 但是如果我使用JSON.stringify(options.models) 后期操作不起作用,格式如下: {"Name":"Test","Age":23} [{"Name

我只是想了解, 我花了几天的时间试图解决一个POST操作不起作用的问题(使用WebAPI和AngularJS)。 我考虑了所有的事情,尝试,搜索,甚至修改了一千次代码。之后,我发现当
JSON
格式如下时,
POST
起作用:

{"Name":"Test","Age":23}
[{"Name":"Test","Age":23}]
但是如果我使用
JSON.stringify(options.models)

后期操作不起作用,格式如下:

{"Name":"Test","Age":23}
[{"Name":"Test","Age":23}]
我不明白它们之间有什么区别(不管括号中的是
[]

为什么第一个有效,而第二个无效

有没有办法让第二种格式起作用

第二个是JSON数组吗

JSON.stringify(options.models)
不应该返回JSON格式吗

类别:

 public class EmployeesData
        {
            public EmployeesData() { }
            public EmployeesData(int Id, string Name, int Age, int Phone,string Job, string Department)
            {   this.ID = Id;
                this.Name = Name;
                this.Age = Age;
                this.Phone = Phone;
                this.Job = Job;
                this.Department = Department;}

            [Required]
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }

        }
在WebApi中:

    [HttpPost]
        [ResponseType(typeof(EmployeesData))]

        public async Task<IHttpActionResult> Post([FromBody]EmployeesData employeesData) 
{
            if (!ModelState.IsValid) {
              return BadRequest(ModelState);}

            db.Employees.Add(employeesData);
            await db.SaveChangesAsync();

            return CreatedAtRoute("DefaultApi", new { id = employeesData.ID }, employeesData);
        }

上述两种格式(
{“名称”:“测试”、“年龄”:23}
[{“名称”:“测试”、“年龄”:23}]
)均指两种不同的合同

第一个只是一个对象,第二个是对象的集合

假设您正在从angular发送
{“Name”:“Test”,“Age”:23}
,那么您的Api控制器方法应该如下

public void Demo(Test test)
{
  ///code here 
}
测试将在哪里

public class Test 
{
   public string Name {get;set;}
   public int Age {get;set;}
}
如果您正在发送[{“Name”:“Test”,“Age”:23}],那么您的控制器应该如下

public void Demo(ICollection<Test> test)
{
  ///code here 
}
公共作废演示(ICollection测试)
{
///代码在这里
}

您试图调用的WebApi函数的函数原型是什么?您是否可以更新问题而不是发表评论。它使代码更容易阅读。另外,你能把
员工信息发布到
类中吗?我怀疑这就是问题的原因。我更新了问题,你能检查一下吗?太好了!在ICollection中,您可以执行类似于test.Name的操作吗?您不能在集合中执行
test.Name
,但可以在集合中的一个项目上执行此操作。在集合中,如果您想执行test.Name,您应该迭代它。例如:
foreach(测试中的var项){Console.WriteLine(item.Name);}