Как передать массив сложных объектов параметру IEnumerable в URI - PullRequest
0 голосов
/ 30 ноября 2018

Я могу передавать массивы простых типов в URI (т. Е. Запросы GET).Я также могу передавать сложные объекты в URI.

Однако я не смог передать массив сложных объектов.

Если у меня есть класс, скажем,

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

И мой метод действия Web API - это IEnumerable<Person>, как должен выглядеть URI?Если это помогает, я использую JavaScript, чтобы сделать запрос GET.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вы можете отправить свою коллекцию объектов, используя 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',
});

Для десериализации вашего объекта JSON в вашем веб-интерфейсе вы можете использовать приведенную ниже документацию для руководства.

Десериализацияс CustomCreationConverter

0 голосов
/ 30 ноября 2018

Возможно, вы захотите включить свой метод контроллера.Но из того, что вы описываете немного кода для подшивки модели, вам будет довольно легко передать список людей в любом формате, который вы захотите, либо в строке запроса, либо как часть опубликованного содержимого тела.

Вот ссылка на привязку базовой модели asp.net, которая актуальна на момент написания этой статьи.https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-2.1 Возможно, он когда-нибудь перестанет работать, но вы всегда можете использовать ваш любимый поисковик, чтобы найти model binder и получить текущую информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...