Почему данные в Angular бэкэнд-контроллере Web API всегда остаются пустыми после Angularjs запроса POST? - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в angular, пытался найти много сообщений, но никто не помог мне получить данные в методе контроллера после сообщения angular js. Кто-нибудь знает, почему параметры объекта модели пусты, хотя angularjs post отправляет данные?

это полезная нагрузка запроса, которую я нашел в отладчике chrome, так что я думаю, что все идет к bakend правильно ..

{Name: "MyName"}
Name: "MyName"

FrontEnd:

   <div id="divMain" ng-app="testCtrl">
    <div id="divTblForm" class="border" ng-controller="ButtonsController">
       <input id="btnTest" class="inptSubmit right roundBorder" type="button" value="Test" ng-click="test()" />
    </div>
   </div>

вот javascript (я попытался привести в соответствие, без stringify, имена свойств в кавычках objToSearch, не в кавычках и так далее. .)

function getAngularApp() {
      return angular.module('testCtrl', []);
    }
app.controller('ButtonsController', function ($scope, $http) {
  $scope.test = function () {

    var objToSearch = {
      Name: 'MyName'
    }

    $http.post("TestAngular/Test", JSON.stringify(objToSearch),
      {
        headers: {
          "Content-Type": "application/json"
        }
      }
    ).success(function (response) {
      alert(response)
    })
      .error(function (error) {
        alert(error);
      });
  }
});

Backend: я пробовал с атрибутом FromBody и без него, и ни один из них не принес успеха ..

 [RoutePrefix("TestAngular")]
    public class TestAngularController : Controller
    {
        [System.Web.Http.Route("Test")]
        [System.Web.Http.HttpPost]
        public List<Test> Test([System.Web.Http.FromBody]Test test)
        {
//breakpoint here, parameter 'test' values always empty or null..
            return null;
        }
    }

вот класс модели

public class Test
{
    public string Name { get; set; }

}

Может кто-нибудь помочь, пожалуйста? Я потратил уже более 4 часов на поиск похожих тем и попыток. это становится действительно изнурительным. (

1 Ответ

0 голосов
/ 21 апреля 2020

Я изменил код AngularJS для публикации данных, используя $ http.post , который работает как положено.

Вкл. AngularJS клиент

<script>
    function getAngularApp() {
        return angular.module('testCtrl', []);
    }

    var app = getAngularApp();

    app.controller('ButtonsController', function ($scope, $http) {
        $scope.test = function () {

        var objToSearch = {
            Name: 'MyName'
        }

        $http.post("/TestAngular/Test", JSON.stringify(objToSearch),
            {
            headers: {
                "Content-Type": "application/json"
            }
            }
        ).then(function successCallback(response) {
            //code logic here
            console.log("success");
        }, function errorCallback(response) {
            console.log("error");
        });
        }
    });
</script>

Результат теста

enter image description here

Чтобы устранить проблему, вы можете использовать инструменты почтальона и c, чтобы сделать запрос (-ы) с те же данные тестирования и проверьте, может ли действие вашего контроллера получить отправленные вами данные. И если возможно, вы можете создать новый проект для реализации той же функциональности, а затем проверить, может ли этот новый работать хорошо.

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