首页 > 解决方案 > 我在 .net5 api 应用程序中有两个具有一对多关系的模型。子模型包含 IFormFile 属性。我无法绑定此属性

问题描述

这是我的模型

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public List<CategoryDetail> CategoryDetails { get; set; }
}

public class CategoryDetail
{
    public int Id { get; set; }
    public string Url { get; set; }
    public IFormFile File { get; set; }
    public Category Category { get; set; }
}

我的控制器功能是

    [HttpPost]
    public IActionResult Create([FromForm] Category category)
    {
        throw new NotImplementedException();
    }

当我通过邮递员传递数据时,控制器方法内的参数始终为空。

在此处输入图像描述

标签: c#asp.net-coreasp.net-web-api.net-5

解决方案


不能将两种不同的内容类型数据传递到后端。

你的键名错了,应该CategoryDetails[0].File不是CategoryDetails[0].files。键名应与属性名匹配,并且不区分大小写。

正确的方法应该如下:

在此处输入图像描述

笔记:

如果您CategoryDetails仅使用File属性发布,则需要确保删除[ApiController][FromForm]属性。这是一个已知的 github 问题。如果您发布CategoryDetails多个属性,则无需删除任何属性。


推荐阅读