从角度js控制器到asp控制器的字符串数组

时间:2018-05-19 10:58:27

标签: angularjs asp.net-mvc

我正在使用带有asp mvc 5.0和angularJS v1.6.10的visual studio 2017。我需要通过$ http服务将angularJS中的对象发送到asp控制器,请参阅以下代码

 public class Patient
{
    public int Age { get; set; }
    public byte Gender { get; set; }
    public bool IsSmoker { get; set; }
    public string[] Symptoms { get; set; }
    public bool FractionWithTbPatient { get; set; }
    public bool PreviousTbInfection { get; set; }
    public bool Inheritedcysricfibrosis { get; set; }
    public bool Inheritedasthma { get; set; }
    public bool Smokermother { get; set; }
    public bool OrganicDust { get; set; }
    public bool FractionWithanimals { get; set; }
    public bool PreviousSurgery { get; set; }
    public bool Longbonebroken { get; set; }
    public bool Pregnant { get; set; }
    public bool CancerInfection { get; set; }
    public bool LongTimeInBed { get; set; }
    public bool PreviousInfectionWithPulmonaryEmbolism { get; set; }
}

和asp控制器方法如下

public class ConditionDiagnosisController : Controller{
    [HttpPost]                                                          
    public void GetCaseResult(Patient patient) 
    {                                                                          
        int i = 0;                                                           
        i++;                                    
    }
}

和angularJS控制器是下面的

myApp.controller("mainController",
function ($scope, $http) {

    var patient = new Object();

    patient.Age = 1;
    patient.Gender = 0;
    patient.IsSmoker = false;
    patient.Inheritedasthma = false;
    patient.Symptoms = ['x','y'];
    patient.Pregnant = false;
    patient.FractionWithTbPatient = false;
    patient.PreviousTbInfection = false;
    patient.Inheritedcysricfibrosis = false;
    patient.Inheritedasthma = false;
    patient.Smokermother = false;
    patient.OrganicDust = false;
    patient.FractionWithanimals = false;
    patient.PreviousSurgery = false;
    patient.Longbonebroken = false;
    patient.Pregnant = false;
    patient.CancerInfection = false;
    patient.LongTimeInBed = false;
    patient.PreviousInfectionWithPulmonaryEmbolism = false;
    $scope.go = function () {
        $http({
            method: "POST",
            url: "/ConditionDiagnosis/GetCaseResult",
            dataType: 'json',
            data: $scope.patient,
            headers: { "Content-Type": "application/json" }
        });
    };
});

当我发送它时,我正确地在asp方法中获取对象的所有值,否则是Symptoms变量,这是一个字符串数组,我得到它为null。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

尝试使用此data : JSON.stringify($scope.patient)

答案 1 :(得分:0)

在ASP.NET类中,您应该在构造函数中分配Array。

问题是您无法分配数组,因此最好的方法是使用List

将症状类型更改为List,然后在构造函数中编写此代码:

public Patient(){
  Symptoms = new List();
}
相关问题