Json AngularJS将带有布尔值的空参数传递给asp.net控制器

Json AngularJS将带有布尔值的空参数传递给asp.net控制器,json,angularjs,asp.net-mvc,Json,Angularjs,Asp.net Mvc,我正在使用asp.net核心MVC 3.1.0。我从AngularJS打电话给MVC控制器提交表单。但参数对象正在将null传递给控制器: AngularJS: $scope.minfo = 0; $scope.submit = function () { var model = {"obj": {"Email": $scope.email,"Password": $scope.pw,"memberInformed":$scope.minfo}; return

我正在使用asp.net核心MVC 3.1.0。我从AngularJS打电话给MVC控制器提交表单。但参数对象正在将null传递给控制器:

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#:

更新: 布尔输入字段:

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


我可以在不使用
memberInformed
boolean参数的情况下发送参数。否则,对象为空。感谢您的回答。

由于您的控制器操作
公共IActionResult寄存器(Register obj)
正在使用Register viewmodel,请修改您的角度代码以发送obj,而不将其包装在
{}
中,如下所示:

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

<input type="checkbox" ng-model="checkboxModel.value2"  ng-true-value="true" ng-false-value="false">
<input type="checkbox" ng-model="checkboxModel.value2">
更新: 根据您的更新,您正试图将int($scope.minfo)发送给布尔数据类型MemberNotified,因此出现了问题

因此,或者将C#Register对象的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; } 
}
修改角度和视图代码,如下所示:

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

<input type="checkbox" ng-model="checkboxModel.value2"  ng-true-value="true" ng-false-value="false">
<input type="checkbox" ng-model="checkboxModel.value2">
$scope.minfo=false;
或者您可以跳过ng真值和ng假值,如下所示:

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

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


您使用的是哪个版本的MVC?请尝试修改控制器操作签名以使用[FromBody]。=><代码>公共IActionResult寄存器([FromBody]Register obj)。无需串接数据。AngularJS框架会自动完成这项工作。如果没有stringfy,它会显示“Object Object”,但我可以通过stringfy看到参数。问题是它们在控制器端为空@georgeawg检查开发人员控制台的“网络”选项卡以查看请求并对其进行调试。使用
ng true value
,minfo值不会是布尔值。当我试图缩短我的问题时,我删除了一些参数。我知道布尔参数是个问题。我再次更新了我的问题。您的答案在没有json.stringify的情况下也可以使用。@Zeynep:我更新了我的答案以删除json.stringify。另外,向memberInformed解释了该问题。请验证我答案中的更新部分