Я хочу передать коллекцию строк к API конечной точке:Не удается передать коллекцию строк в контроллер API
[HttpGet]
public DashboardSectionViewModel GetDashboard(
DateTime lowerBound,
DateTime upperBound,
[FromUri] List<string> excludedStores = null,
[FromUri] List<string> excludedItems = null)
{
//Code
}
Вот где я делаю вызов:
$.ajax({
url: App.Services.updateUrl + src.updateUrl,
type: "GET",
data: {
lowerBound: self.slideFilter.lowerBoundDisplay(),
upperBound: self.slideFilter.upperBoundDisplay(),
excludedStores: self.storeFilter.excludedStores(),
excludedItems: self.experienceFilter.excludedItems()
}
});
Это прекрасно работает, когда два элемента коллекции не являются параметрами и не передаются по запросу AJAX. Это не сработало, когда я изначально использовал IEnumerable<string>
, и изменение на List<string>
тоже не сработало. Нужно ли настраивать маршрут для этого? Получит ли переводчик DateTime
, но не IEnumerable<T>
?
EDIT: Вот это URL генерируется с пустыми коллекциями прошли:
(заголовок)/API/ContentAPI/GetDashboard LowerBound = 10-12 & UpperBound = 10-23
Вот URL-адрес генерируется с некоторыми пунктами сбора прошел:
(заголовок)/API/ContentAPI/GetDashboard LowerBound = 10-10 = & UpperBound 10-23 & excludedStores% 5B% 5D = привет & excludedStores% 5B% 5D = мир & excludedExperiences% 5B% 5D = привет & excludedExperiences% 5B% 5D = мир
Я думаю, что это проблема сериализации, но Я не уверен.
Пробовал приклеивать параметры к классу и иметь только один объект в качестве параметра для вашего метода API? –
Я не думал, что это сработает, потому что оно не правильно интерпретирует коллекции. После тестирования он также не интерпретирует объект. – jokulmorder
Вместо передачи списка строк попробуйте передать значение в виде строки и использовать токенизатор внутри метода, чтобы разбить строку на перечислимую строку. –