Вызовите WebApi из объекта передачи $ Angularjs

0

Я пытаюсь вызвать метод WebApi из функции angularjs $ http. Я пробовал использовать стандартный запрос get, query и action, но меня исправило, поняв, что вы не можете передать объект с Get. Поэтому я использую Post. Web Api вызывается и возвращает ожидаемое значение. Однако угловая сторона не получает значения. Вот последняя, которая не работает:

WebAPI

[RoutePrefix("api/frequentpawner")]
    public class FrequentPawnerController : ApiController
    {
        [HttpPost]
        public HttpResponseMessage Post([FromBody] FrequentPawnerReportCriteria criteria)
        {
            var repo = new FrequentPawnerReport();
            var result = repo.GetReport(criteria);
            var httpResult = new HttpResponseMessage(HttpStatusCode.OK);
            var jsonMediaTypeFormatter = new JsonMediaTypeFormatter
            {
                SerializerSettings =
                    {
                        ContractResolver = new CamelCasePropertyNamesContractResolver()
                    }
            };
            httpResult.Content = new ObjectContent<List<FrequentPawnerReport>>(result, jsonMediaTypeFormatter);
            return httpResult;
        }

 function getFrequentPawner(criteria) {
            return $http.post("/api/FrequentPawner/Post", criteria)
                .then (getFrequentPawnerComplete)
                .catch(getFrequentPawnerFailed);
            function getFrequentPawnerComplete(response) {
                var x = response.data;
                return response.data.results;
            }
            function getFrequentPawnerFailed(error) {
                alert("XHR failed for frequent pawner report: " + error.responseText);
            }
        }

объект критериев:

vm.criteria = {maxResults: 25, startDate: new Дата (2014, 10, 1), endDate: новая Дата (2014, 11, 1), isActive: true, transTypeId: 1, юрисдикции: [], reportType: 1, Отношение: 1, make: '', propertyGroupId: 0, propertyTypeId: 0, jurisCount: 0, storeCount: 0, useTypePawn: false, useTypeScrap: false}

Любые идеи приветствуются.

  • 0
    как это не работает ? ошибки в консоли браузера? ошибки на сервере? ничего не делать?
  • 0
    first: IEnumerable<FrequentPawnerReport> Get если вы возвращаете коллекцию - почему здесь 'get' : {method: 'GET', isArray: false }, вы устанавливаете флаг isArray в false ?
Показать ещё 10 комментариев
Теги:
asp.net-web-api

1 ответ

0

Я вижу несколько ошибок в вашем коде.

  1. ваш метод возврата метода get, поэтому здесь 'get': {method: 'GET', isArray: false }, флаг isArray должен быть правдой, иначе вы получите ошибку от углового, когда получите ответ.

  2. ваш метод Get без параметров, поэтому, возможно, вам нужно что-то вроде

    public IEnumerable<string> Get(FrequentPawnerReportCriteria criteria)
    
  3. вы путаете методы Get и Post. Поэтому, возможно, это действие FrequentPawnerReport должно быть сообщением и возвращать только один объект.

    public FrequentPawnerReport Post([FromBody] FrequentPawnerReportCriteria criteria)
    {
        var repo = new FrequentPawnerReport();
        return repo.GetReport(criteria);
    }
    
  • 0
    Зачем нужен метод Post, если я получаю данные? Объект критерия, который я передаю, представляет собой набор критериев для отправки через контроллер в метод репозитория. Кроме того, это не ударяет контроллер Web Api вообще. Я даже изменил вызов, чтобы получить без параметров Get, и это не вызывало это.
  • 0
    @rsalit, так что вы используете его неправильно :-) вы пытаетесь вызвать из js action без параметров, потому что для действия с параметрами вы добавляете другой маршрут

Ещё вопросы

Сообщество Overcoder
Наверх
Меню