为什么 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
。
我有这些模型
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
。