Я перевожу веб-API на ASP. NET ядро 2.2, но у меня возникают проблемы при моделировании данных массива привязки, передаваемых через строки запроса в запросах GET. В старом коде веб-API jquery запросы в основном просто работали, но теперь они этого не делают. Предположим, у нас есть простой API опроса для сервера чата в качестве примера:
public class PollChat
{
public Guid ChatId { get; set; }
public int MessageId { get; set; }
}
//... in controller
[HttpGet]
[Route("api/Poll")]
public async Task<ActionResult> Poll([FromQuery] PollChat[] chats)
{
return new JsonResult(await chatServer.Poll(chats));
}
Простая функция jquery для вызова этого:
function poll(id, msgId) {
var data = { chats: [{ chatId: id, messageId: msgId }] };
$.get(opt.pollUrl, data, display); //'display' renders the messages
}
Однако на стороне сервера ' Параметр чатов пуст. Полученная на стороне сервера декодированная строка запроса:
?chats[0][chatId]=4b766187-f058-4d9e-8236-0b078657fa10&chats[0][messageId]=0
Учитывая правила привязки модели , возможно, строка запроса должна выглядеть примерно так:
?chats[0].chatId=4b766187-f058-4d9e-8236-0b078657fa10&chats[0].messageId=0
Это работает, когда я жестко кодирую этот URL-адрес запроса, но как я могу получить такое же поведение сериализации объекта, используя jquery, чтобы мне не пришлось вручную создавать URL-адрес? Альтернативно, есть ли способ для ядра ASP. NET принять формат сериализации jquery?
Я пробовал несколько ревизий исходного API, и это похоже на привязку модели строки запроса и jquery просто больше не работают вместе, поэтому я просто пытаюсь найти решение, которое сокращает мои усилия по переносу, не слишком меняя API.