. Net Модель Core POST, отправленная Angular 8, получает значения по умолчанию - PullRequest
0 голосов
/ 24 февраля 2020

из Angular 8 / TS У меня нет проблем с отправкой базовых c типов и объектов с базовыми c типами. Но с более сложными моделями я получаю только значения по умолчанию, и я не знаю, что я что-то упускаю.

Здесь вы получили вызов POST от TS и моделей от Angular и C#

Меня интересует, должны ли такие привязки, массивы моделей, выполняться вручную или я что-то не так делаю.

parameters

enter image description here

TS

return this.http.post<void>(environment.apiBaseUrl + 'api/WorkFlow/AddWorkflow', workflowDTO);



export class WorkflowDTO {
    id: number;
    name: string;
    description: string;
    stepItemsToDelete: Array<Step>;
    stepItemsToAdd: Array<Step>;
    stepOrder: Array<StepOrder>;
    constructor() {
        this.id = 0;
        this.name = '';
        this.description = '';
        this.stepItemsToAdd = [];
        this.stepItemsToDelete = [];
        this.stepOrder = [];
    }
}
export class StepOrder {
    id: number;
    order: number;
}
export class Step {
    id: number;
    workflowId: number;
    stepTypeId: number;
    text: string;
    path: string;
    stepOrder: number;
    stepName: string;
    imageFile:  string;
}

Контроллер

public int AddWorkflow(WorkflowDTO workflowDTO)
{
    if(!ModelState.IsValid) //it is always true
    {
        return 0;
    }
        return 1;
}

public class WorkflowDTO
    {
        public int id { get; set; }
        public string name { get; set; }
        public string description { get; set; }
        public List<Step> stepItemsToDelete { get; set; }
        public List<Step> stepItemsToAdd { get; set; }
        public List<StepOrder> stepOrder { get; set; }
    }
    public class Step
    {
        public int id { get; set; }
        public int workflowId { get; set; }
        public int stepTypeId { get; set; }
        public int stepOrder { get; set; }
        public string text { get; set; }
        public string path { get; set; }
        public string stepName { get; set; }
        public string imageFile { get; set; }
    }
    public class StepOrder
    {
        public int id { get; set; }
        public int order { get; set; }
    }

Спасибо серия

1 Ответ

1 голос
/ 24 февраля 2020

Вам необходимо добавить атрибут привязки модели FromBody в метод вашего контроллера:

publi c int AddWorkflow ([FromBody] WorkflowDTO workflowDTO)

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

stepItemsToDelete: Step [];

Дайте мне знать, как это происходит.

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