【发布时间】:2019-05-21 17:16:27
【问题描述】:
是否可以将两个参数传递给一个 [httpPost] 控制器方法? 我想传递一个模型和一个文件。 要传递我使用的模型:
CS
public async Task<IActionResult> Create([Bind("prop1,prop2,prop3")] SomeModel model)
HTMLCS
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="prop1" class="control-label"></label>
<select asp-for="prop1" class ="form-control" asp-items="ViewBag.prop1"></select>
</div>
<div class="form-group">
<label asp-for="prop2" class="control-label"></label>
<input asp-for="prop2" class="form-control" />
<span asp-validation-for="prop3" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="prop3" class="control-label"></label>
<input asp-for="prop3" class="form-control" />
<span asp-validation-for="prop3" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</form>
而且效果很好。 但我也想发布一个文件。 所以我创建了一个输入
<label asp-for="FileName" class="control-label"></label>
<input type="file" asp-for="FileName" name="FileName"/>
并修改了我在控制器中的方法
public async Task<IActionResult> Create([Bind("prop1,prop2,prop3")] SomeModel model, IFormFile FileName)
但它说 SomeModel 不包含“文件名”的定义:(
编辑: 编码为https://docs.microsoft.com/pl-pl/aspnet/core/mvc/models/file-uploads?view=aspnetcore-2.2
如果您的控制器使用 IFormFile 接受上传的文件,但您 发现值始终为null,确认你的HTML表单是 指定 multipart/form-data 的 enctype 值。如果这个属性 未在元素上设置,文件上传不会发生,并且任何 绑定的 IFormFile 参数将为空。
【问题讨论】:
-
你的模型类在哪里?
-
只是一个具有随机 3 个属性的简单模型
标签: forms asp.net-core model upload asp.net-core-mvc