Как устранить проблему - на контроллере не было найдено никакого действия, совпадающего с именем при отправке объекта JSON в ASP.NET WebAPI из AngularJS - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно передать данные, введенные в интерфейс AngularJS, в webAPI и получить другой набор данных для заполнения в сетке.Я пытаюсь передать данные в виде объекта JSON в метод webAPI.В методе WebAPI параметр, который я передаю для объекта JSON в качестве объекта Class.

Я не могу войти в конкретный метод webAPI, когда использую [HTTPPost] и получаю ошибку as- На контроллере, соответствующем запросу, не найдено никаких действий.

Но я могу войти в другие методы webAPI, имеющие [HTTPGet].

Может кто-нибудь подсказать, пожалуйста, как решить проблему. Спасибо!

WebAPI

using System.Web.Http;
using AttributeRouting.Web.Http;

namespace webAPITestProject.Controllers
{
    [Route("api/Values")] 
    public class ValuesController : ApiController
    {
        retrieveEmployeeData empData = new retrieveEmployeeData();
        retrieveProductDetails prodDetls = new retrieveProductDetails();    

        [Route("PostEmployeeData")] 
        [HttpPost]
        public DataTable PostEmployeeData([FromBody] Employer empDetails)
        {
            DataTable dataTable = new DataTable { TableName = "MyTableName" };
            dataTable = empData.getEmployeeData(empDetails);
            return dataTable;
        }
    }
}

AngularJS-Controller

angular.module('Test.Employer')
    .controller('EmployerController', ['$scope','headerValue', '$http',
        function ($scope, headerValue, $http) { 
            var ipEmployerDetls = {                   
                EmployerName: "cherokee",
                Company: "ABC"                   
            };

            $http({ 
                url: 'http://localhost:53583/api/Values/PostEmployeeData?empDetails='+'"'+JSON.stringify(ipEmployerDetls)+'"',
                dataType: 'json', 
                method: 'POST', 
                data: JSON.stringify(ipEmployerDetls), 
                headers: { 
                    "Content-Type": "application/json" 
                } 
            }).success(function (response) { 
                $scope.object = response.data;
            }) 
                .error(function (error) { 
                    alert(error.Message); 
                });
})();

Класс работодателя

public class Employer
{
    public string Company{get;set;}
    public string EmployerName{get;set;}
}

1 Ответ

0 голосов
/ 06 февраля 2019

вы отправляете данные в конечную точку, вам не нужно ничего добавлять в URL.

  $http({ 
                url: 'http://localhost:53583/api/Values/PostEmployeeData',
                dataType: 'json', 
                method: 'POST', 
                data: JSON.stringify(ipEmployerDetls), 
                headers: { 
                    "Content-Type": "application/json" 
                } 
            }).success(function (response) { 
                $scope.object = response.data;
            }) 
                .error(function (error) { 
                    alert(error.Message); 
                });

Я очистил ваш звонок, предоставленные вами данные отправляются в телесообщение и ваш контроллер ожидает его там, как указано тегом [FromBody]

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