Angular 8发送的.Net Core POST模型接收默认值

Angular 8发送的.Net Core POST模型接收默认值,angular,typescript,.net-core,Angular,Typescript,.net Core,从Angular 8/TS发送基本类型和具有基本类型的对象没有问题。但对于更复杂的模型,我只收到默认值,我不知道是否遗漏了什么 这是TS和模特的电话,Angular和C 我想知道这种绑定(模型数组)是必须手动完成还是我做错了什么 TS 控制器 非常感谢您需要将FromBody模型绑定属性添加到控制器方法中: public int AddWorkflow[FromBody]WorkflowDTO WorkflowDTO 此外,由于属性类型的原因,它可能无法映射TS类。我从未尝试过这样键入数组,但这

从Angular 8/TS发送基本类型和具有基本类型的对象没有问题。但对于更复杂的模型,我只收到默认值,我不知道是否遗漏了什么

这是TS和模特的电话,Angular和C

我想知道这种绑定(模型数组)是必须手动完成还是我做错了什么

TS

控制器


非常感谢

您需要将FromBody模型绑定属性添加到控制器方法中:

public int AddWorkflow[FromBody]WorkflowDTO WorkflowDTO

此外,由于属性类型的原因,它可能无法映射TS类。我从未尝试过这样键入数组,但这可能会导致问题。我确信下面的语法是有效的

stepItemsToDelete:步骤[]


让我知道进展如何。

您好,谢谢您的评论。不幸的是,将数组更改为[]is TS不起作用。此外,我还尝试从后端删除列表并使用[],但运气不佳。[fromBody]是我有时添加或删除的东西,以测试它是否有效。在POST中,我还尝试发送workflowDTO和{workflowDTO},有时随机发送,试图找到解决方案。我在问题中添加了一个屏幕截图,其中显示了后端接收到的值。ModelState对象没有提供有用的信息,因为它是有效的。您得到的响应是什么?因为您提到您的modelState是有效的,所以您的响应的状态代码为200,并且每次返回1。对吗?您是否尝试过在Angular代码中记录请求主体?只是为了确保API得到我们认为它得到的数据。是的,一切正常,我收到1:我添加了一个控制台日志屏幕截图。
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; }
    }