отправить массив строк из углового контроллера js в контроллер asp - PullRequest
0 голосов
/ 19 мая 2018

Я использую Visual Studio 2017 с asp mvc 5.0 и angularJS v1.6.10.Мне нужно отправить объект из angularJS в контроллер asp через службу $ http, см. Следующий код

 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, которая является строковым массивомЯ получаю это нуль.Любая помощь?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

в классе ASP.NET вы должны назначить Array в конструкторе.

проблема заключается в том, что вы не можете назначить массив, поэтому лучший способ - использовать List

измените тип Симптомов на Список, а затем в конструкторе напишите этот код:

public Patient(){
  Symptoms = new List();
}
0 голосов
/ 19 мая 2018

Попробуйте с этим data : JSON.stringify($scope.patient)

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