Передача данных из вида на контроллер net - mvc с помощью AngularJS - PullRequest
0 голосов
/ 16 февраля 2020
 public class Home
{
    string CustEmail { get;set;}
    string CustName { get; set;}

    int id { get; set;}
}

Модель

[HttpPost]
    public void CreateCustomer(Home cust)
    {
        if (ModelState.IsValid)
        {

        }

    }

Контроллер

angular.module('myFormApp', []).controller('CustomerController', function ($scope, $http, $location, $window) {
    debugger;
    $scope.cust = {};
    $scope.message = '';
    $scope.result = "color-default";
    $scope.isViewLoading = false;

    //get called when user submits the form
    $scope.submitForm = function () {
        $scope.isViewLoading = true;
        console.log('Form is submitted with:', $scope.cust);
        //$http service that send or receive data from the remote server

        var cust = {
            CustEmail: $scope.cust.CustEmail,
            CustName: $scope.cust.CustName,
            id: 1,
        };

        $http(
        {
            method: 'POST',
            url: '/Home/CreateCustomer',
            data: cust,
        }).then(function (data, status, headers, config) {
            $scope.errors = [];
            if (data.success === true) {
                $scope.cust = {};
                $scope.message = 'Form data Submitted!';
                $scope.result = "color-green";
                $location.path(data.redirectUrl);
                $window.location.reload();
            }
            else {
                $scope.errors = data.errors;
            }
        })
        $scope.isViewLoading = false;
    }
}).config(function ($locationProvider) {
  //default = 'false'
  $locationProvider.html5Mode(true);
});

Я получаю данные в надлежащем формате во внешнем интерфейсе, и обратный вызов также работает, но я не могу получить значение в MVC контроллере. Я не знаю, что я делаю не так. Я попытался использовать отдельный элемент в контроллере, тогда он работает нормально, но я хочу это только через модель.

enter image description here

1 Ответ

0 голосов
/ 16 февраля 2020

Метод обещания .then предоставляет только одно значение, а не четыре.

$http(
{
    method: 'POST',
    url: '/Home/CreateCustomer',
    data: cust,
̶}̶)̶.̶t̶h̶e̶n̶(̶f̶u̶n̶c̶t̶i̶o̶n̶ ̶(̶d̶a̶t̶a̶,̶ ̶s̶t̶a̶t̶u̶s̶,̶ ̶h̶e̶a̶d̶e̶r̶s̶,̶ ̶c̶o̶n̶f̶i̶g̶)̶ ̶{̶
}).then(function (response) {
    var data = response.data;
    var status = response.status;
    var headers = response.headers;
    var config = response.config;
    $scope.errors = [];
    if (data.success === true) {
        $scope.cust = {};
        $scope.message = 'Form data Submitted!';
        $scope.result = "color-green";
        $location.path(data.redirectUrl);
        $window.location.reload();
    }
    else {
        $scope.errors = data.errors;
    }
})

Для получения дополнительной информации см.


ОБНОВЛЕНИЕ

Вы можете добавить блок .catch в консольный журнал при любых ошибках:

$http(
{
    method: 'POST',
    url: '/Home/CreateCustomer',
    data: cust,
̶}̶)̶.̶t̶h̶e̶n̶(̶f̶u̶n̶c̶t̶i̶o̶n̶ ̶(̶d̶a̶t̶a̶,̶ ̶s̶t̶a̶t̶u̶s̶,̶ ̶h̶e̶a̶d̶e̶r̶s̶,̶ ̶c̶o̶n̶f̶i̶g̶)̶ ̶{̶
}).then(function (response) {
    var data = response.data;
    var status = response.status;
    var headers = response.headers;
    var config = response.config;
    $scope.errors = [];
    if (data.success === true) {
        $scope.cust = {};
        $scope.message = 'Form data Submitted!';
        $scope.result = "color-green";
        $location.path(data.redirectUrl);
        $window.location.reload();
    }
    else {
        $scope.errors = data.errors;
    }
    console.log("OK:", response.data);
}).catch(function(response) {
    console.log("ERROR:", response);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...