Я хочу передать параметры:
public class ProductFilter
{
public List<ProductCollection> collections { get; set; }
public List<string> tags { get; set; }
public decimal? minPrice { get; set; }
public decimal? maxPrice { get; set; }
public ProductFilter()
{
collections = new List<ProductCollection>();
tags = new List<string>();
minPrice = null;
maxPrice = null;
}
}
[System.Web.Http.HttpPost]
[System.Web.Http.HttpGet]
public string LoadProducts([FromUri]string sorter, [FromUri]bool isAscending, [FromUri]string searchString, [FromUri]int currentPage, [FromUri]int itemsPerPage, [FromBody]ProductFilter filter)
{
.....
Это мой код Angularjs $http.post()
:
var filter = $scope.filter == null ? null :
{
minPrice: $scope.filter.minPrice || null,
maxPrice: $scope.filter.maxPrice || null,
collections: $scope.filter.collections || null,
tags: $scope.filter.tags || null,
};
var params = $scope.parent != null ? { parent: $scope.parent, sorter: $scope.sorter, isAscending: $scope.isAscending, searchString: $scope.searchString, currentPage: $scope.currentPage, itemsPerPage: $scope.itemsPerPage }
: { sorter: $scope.sorter, isAscending: $scope.isAscending, searchString: $scope.searchString, currentPage: $scope.currentPage, itemsPerPage: $scope.itemsPerPage };
$scope.showLoading();
$http.post(getUrl, { filter: filter }, {
params: params,
headers: { "Authorization": "Basic " + token }
}).then(function (response) {
.....
Все параметры передаются, если filter
равно нулю, ноесли в фильтре есть значение, $http.post()
завершится неудачно.Это ошибка:
angularjs.min.js: 127 Возможно необработанное отклонение: {"data": {"Message": "Не найден ресурс HTTP, соответствующий URI запроса 'https://localhost:44391/api/ECommerceApi/LoadProducts?currentPage=1&isAscending=false&itemsPerPage=20&sorter=DateCreated'."},"status":404,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","params":{"sorter":"DateCreated","isAscending":false,"currentPage":1,"itemsPerPage":20},"headers":{"Authorization":"Basic 4xfab3pkbBtiiGGuI + NFsEzA / z9Rk8Gxxxxxxxxxxxxxxx "," Accept ":" application / json, text / plain, /"," Content-Type ":" application / json; charset = utf-8 "}, "URL": "/ API / ECommerceApi / LoadProducts", "данные": { "фильтр": { "minPrice": "3000", "maxPrice": нулевой, "коллекция": нулевая, "метка": NULL}}}, "statusText": "", "xhrStatus": "complete"}
Как успешно передать параметры и фильтр?
NOTE
Пробовал с:
$http.post(getUrl, filter, {
params: params,
headers: { "Authorization": "Basic " + token }
}).then(function (response) {
без {filter: filter}
, но с тем же результатом.