Передача параметра Angularjs в Web Api MVC - PullRequest
0 голосов
/ 25 мая 2019

Я хочу передать параметры:

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}, но с тем же результатом.

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