我正在使用ASP.NET Core 2.x,并且具有动态生成的表单(我不知道页面上可能有多少个字段或它们的名称是什么)。除“文件”输入外,此方法工作正常。
此表单上可能的字段类型之一是“文件”输入,允许用户将文件上传到站点。
在这种情况下,我不一定知道该字段的名称是什么,因此我需要创建一个类似于以下内容的控制器动作:
[HttpPost]
public async Task<IActionResult> HandleWorksheet()
{
...
if (field.FieldType == FieldType.FileUpload)
{
var uploadedFile = Request.Form.Files.[field.fieldName];
}
...
}
不幸的是,以上操作无效。实际上,Request.Form.Files为空。
我已经确认表单正在提交文件,并且如果我提前知道字段名称(例如“ myFieldName”)并将其放在操作的签名中,则以下代码将起作用:
[HttpPost]
public async Task<IActionResult> HandleWorksheet(IFormFile myFieldName)
{
...
}
我正在ASP.NET Core 2.x中尝试做些什么吗?
为什么Request.Form.Files为空?
表单正在设置enctype="multipart/form-data"
属性。
答案 0 :(得分:0)
更改此内容:
public async Task<IActionResult> HandleWorksheet(IFormFile myFieldName)
对此:
public async Task<IActionResult> HandleWorksheet([FromForm]IFormFile myFieldName)
这对我有用。