为什么 IFormFile 在嵌套 object 中为空?

Why IFormFile is null in nested object?

我有这些模型

public sealed class UpdateFacilityReportFirstStepCommand : ICommand<ExecutionResult>
{
    // other props

    /// <summary>
    /// Gets or sets the hired staff.
    /// </summary>
    /// <value>The hired staff.</value>
    public List<HiredStaffUpsertModel> HiredStaff { get; set; } = new List<HiredStaffUpsertModel>();
}

public class HiredStaffUpsertModel
{
    // other props

    /// <summary>
    /// Gets or sets the insurance card file.
    /// </summary>
    /// <value>The insurance card file.</value>
    public HiredStaffCarInsuranceCardModel CarInsuranceCardFile { get; set; } = new HiredStaffCarInsuranceCardModel();
}

public class HiredStaffCarInsuranceCardModel
    {
        /// <summary>
        /// Gets or sets the file.
        /// </summary>
        /// <value>The file.</value>
        [FileValidator("pdf,doc,docx", 10 * 1024 * 1024, true)]
        public IFormFile File { get; set; }
    
        /// <summary>
        /// Gets or sets a value indicating whether this instance is changed.
        /// </summary>
        /// <value><c>true</c> if this instance is changed; otherwise, <c>false</c>.</value>
        public bool IsChanged { get; set; }
    }

在我的控制器中,我期望 public [FromForm] UpdateFacilityReportFirstStepCommand command。 这就是我在邮递员中发送表格的方式(content-type:multipart/form-data):

这就是我得到的:

虽然收到了 bool IsChanged,但我不知道为什么我的 File 为空。我的前端开发人员说他会像 Postman 屏幕截图那样向我发送表单键,但我不明白为什么它适用于原始类型而不适用于文件。

我找到的解决方法,跟你的一样

public class Purchase 
{
    public string Customer { get; set; }
    public IEnumerable<Product> Products { get; set; }
}

public class Product
{
    public string ProductCode { get; set; }
    public IFormFile ProductImage { get; set; }
}

您必须像 Products[0].ProductImage 一样发送,否则您将在 ProductImage 中收到 null