在ASP.NET Core中,如果嵌套的IFormFile列表始终为null,可能是因为模型绑定器无法正确地解析请求体中的嵌套属性。可以通过以下方法解决这个问题:
确保在POST请求中使用了enctype="multipart/form-data"
,以确保请求体中包含文件数据。
确保在控制器的POST方法中使用了[FromForm]
属性来指定模型绑定器应该从表单数据中绑定模型。
在嵌套的模型中,使用List
属性而不是IFormFile[]
。ASP.NET Core模型绑定器对List<>
类型的属性有更好的支持。
下面是一个示例,演示了如何在ASP.NET Core中正确地解析嵌套的IFormFile列表:
// 嵌套的模型
public class MyModel
{
public string Name { get; set; }
public List Files { get; set; }
}
// 控制器
public class MyController : Controller
{
[HttpPost]
public IActionResult Upload([FromForm] MyModel model)
{
if (model.Files != null && model.Files.Count > 0)
{
// 处理文件上传
foreach (var file in model.Files)
{
// 处理每个文件
}
}
// 其他逻辑
return Ok();
}
}
确保在表单中正确地设置了文件输入和其他属性,例如:
通过以上步骤,可以正确地解析ASP.NET Core中的嵌套IFormFile列表。