AngularJS передает нулевой параметр со значением bool в контроллер asp. net - PullRequest
0 голосов
/ 28 февраля 2020

Я использую asp. net core MVC 3.1.0. Я звоню от AngularJS до MVC контроллера, чтобы отправить форму. Но объект параметра передает ноль в контроллер:

AngularJS:

$scope.minfo = 0;
$scope.submit = function () {   
    var model = {"obj": {"Email": $scope.email,"Password": $scope.pw,"memberInformed":$scope.minfo};       
    return $http({
        method: 'POST',
        url: '/Home/Register',
        data: model
    });
};

Контроллер c#:

[AllowAnonymous]
[HttpPost]
public IActionResult Register(Register obj)
{       
    //...
    return View();
}

Обновление: логический ввод поле:

<input type="checkbox" name="minfo" ng-model="minfo" ng-true-value="1" ng-false-value="0" required />

Я могу отправлять параметры без memberInformed логического параметра. В противном случае объект является нулевым. Спасибо за ответы.

1 Ответ

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

Поскольку ваше действие контроллера public IActionResult Register(Register obj) выполняет регистрационную модель представления, измените код angular, чтобы отправить объект, не заключая его в {}, как показано ниже:

$scope.submit = function () {   
    var model = {"Email": $scope.email,"Password": $scope.pw };       
    return $http({
        method: 'POST',
        url: '/Home/Register',
        data: model
    });
};

ОБНОВЛЕНИЕ : на основе вашего обновления вы пытаетесь отправить int ($ scope.minfo) в логический тип данных memberInformed и, следовательно, решить проблему.

Итак, либо изменить C# Зарегистрироваться тип свойства memberInformed объекта от bool до int, как показано ниже;

public class Register
{
    // Since you are sending integer value from angular, modify the data type to int from bool
    // public bool memberInformed { get; set; } 
    public int memberInformed { get; set; } 


    public string Email { get; set; } 

    public string Password { get; set; } 
}

или измените ваш angular и просмотрите код, как показано ниже:

$scope.minfo = false;

<input type="checkbox" ng-model="checkboxModel.value2"  ng-true-value="true" ng-false-value="false">

или вы можно пропустить ng-true-value и ng-false-value, как показано ниже:

<input type="checkbox" ng-model="checkboxModel.value2">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...