如何将复杂对象的数组传递给URI中的IEnumerable参数

时间:2018-11-30 01:21:10

标签: asp.net-web-api

我能够在URI中传递简单类型的数组(即GET请求)。我还能够在URI中传递复杂的对象。

但是,我无法传递一组复杂的对象。

如果我上课,说,

class Person {
  public FirstName { get; set;}
  public LastName { get; set; }
}

我的Web API操作方法的参数是一个IEnumerable<Person>,URI应该是什么样?如果有帮助,我正在使用JavaScript发出GET请求。

2 个答案:

答案 0 :(得分:1)

您可能要包括您的控制器方法。但是从您描述模型联编程序的一些代码开始,您就可以很轻松地以查询字符串或发布的正文内容的一部分传递想要的任何格式的人员列表。

这是到撰写本文时最新的asp.net核心模型绑定的链接。 https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-2.1它可能有一天会停止工作,但是您始终可以使用自己喜欢的搜索引擎查找model binder并获取当前信息。

答案 1 :(得分:0)

您可以使用JSON提交对象集合。

var lstPersons = [
{  FirstName: "John", LastName: "Doe" },
{  FirstName: "Bob", LastName: "Sams" },
{  FirstName: "Jane", LastName: "Doe" }
];

$.ajax({
    url: "/api/person",
    data: JSON.stringify({ pos: lstPersons }) ,
    contentType: 'application/json, charset=utf-8'
    type: 'POST',
});

要在Web API中反序列化JSON对象,可以使用以下文档作为指导。

Deserialize with CustomCreationConverter