IFormFile 为空,Razor
IFormFile is null, Razor
我正在尝试绑定图片上传,但在将此图片发送到控制器时遇到问题。
我正在使用 Razor 和 .net core 2.2。
我的控制器
[HttpPost(nameof(MealController))]
[Authorize(Roles = UserRoles.Moderator)]
public IActionResult Update(MealModel meal, IFormFile pic)
{
if (ModelState.IsValid)
{
try
{
var changedMeal = _mapper.Map<MealModel, MealDTO>(meal);
_mealService.Update(changedMeal, pic);
}
catch (Exception e)
{
return NotFound();
}
return RedirectToAction("Index");
}
return View(meal);
}
我的表格
<form class="form" method="post" asp-controller="Meal" asp-action="Update">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Продукт</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="product">
<div class="product-img">
<div class="selector">
<img src="@Model.ImagePath" class="img-thumbnail" id="selectedImg" alt="Product Image"/>
<div class="form-group">
<input type="file" class="custom-file-input" id="pic-input" name="pic"
onchange="readURL(this, 'selectedImg')">
@* <label class="custom-file-label" for="pic-input"></label> *@
</div>
</div>
</div>
<div class="product-info">
<div class="form-group name">
<label for="name">Назва продукту</label>
<input class="form-control" type="text" placeholder="Назва" id="name" name="name" asp-for="Name"
value="@Model.Name">
</div>
<div class="form-group">
<label for="name">Ціна</label>
<input class="form-control" placeholder="Price" id="price" type="number" asp-for="Price"
value="@Model.Price">
</div>
<div class="form-group">
<label for="name">Вага</label>
<input class="form-control" id="weight" type="number" asp-for="Weight"
value="@Model.Weight">
</div>
<div class="comments">
<textarea class="form-control" rows="3" cols="5" placeholder="Склад" asp-for="Description" value="@Model.Description"></textarea>
</div>
<input type="hidden" asp-for="MealGroupId" value="@Model.MealGroupId"/>
<input type="hidden" asp-for="Id" value="@Model.Id"/>
@* <input type="hidden" asp-for="ImagePath" value="@Model.ImagePath"/> *@
</div>
</div>
</div>
<div class="modal-footer">
<div class="action-button">
<button type="submit"
class="btn btn-success ok-button">
<span>Додати</span>
</button>
<button type="reset"
class="btn btn-danger remove-button">
<span>Відмінити</span>
</button>
</div>
</div>
</div>
</form>
当我调试时,IFormFile
总是 null
。我尝试使用 [FromForm] 但它没有帮助。我用谷歌搜索,发现我的 name
形式和参数名称不同,但它有效。你能不能给我一些关于如何解决它的提示。谢谢你,祝你有美好的一天!
您必须将 <form>
的 enctype
属性设置为 multipart/form-data
才能将文件发送到服务器
<form class="form" method="post" asp-controller="Meal" asp-action="Update" enctype="multipart/form-data">
我正在尝试绑定图片上传,但在将此图片发送到控制器时遇到问题。
我正在使用 Razor 和 .net core 2.2。 我的控制器
[HttpPost(nameof(MealController))]
[Authorize(Roles = UserRoles.Moderator)]
public IActionResult Update(MealModel meal, IFormFile pic)
{
if (ModelState.IsValid)
{
try
{
var changedMeal = _mapper.Map<MealModel, MealDTO>(meal);
_mealService.Update(changedMeal, pic);
}
catch (Exception e)
{
return NotFound();
}
return RedirectToAction("Index");
}
return View(meal);
}
我的表格
<form class="form" method="post" asp-controller="Meal" asp-action="Update">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Продукт</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="product">
<div class="product-img">
<div class="selector">
<img src="@Model.ImagePath" class="img-thumbnail" id="selectedImg" alt="Product Image"/>
<div class="form-group">
<input type="file" class="custom-file-input" id="pic-input" name="pic"
onchange="readURL(this, 'selectedImg')">
@* <label class="custom-file-label" for="pic-input"></label> *@
</div>
</div>
</div>
<div class="product-info">
<div class="form-group name">
<label for="name">Назва продукту</label>
<input class="form-control" type="text" placeholder="Назва" id="name" name="name" asp-for="Name"
value="@Model.Name">
</div>
<div class="form-group">
<label for="name">Ціна</label>
<input class="form-control" placeholder="Price" id="price" type="number" asp-for="Price"
value="@Model.Price">
</div>
<div class="form-group">
<label for="name">Вага</label>
<input class="form-control" id="weight" type="number" asp-for="Weight"
value="@Model.Weight">
</div>
<div class="comments">
<textarea class="form-control" rows="3" cols="5" placeholder="Склад" asp-for="Description" value="@Model.Description"></textarea>
</div>
<input type="hidden" asp-for="MealGroupId" value="@Model.MealGroupId"/>
<input type="hidden" asp-for="Id" value="@Model.Id"/>
@* <input type="hidden" asp-for="ImagePath" value="@Model.ImagePath"/> *@
</div>
</div>
</div>
<div class="modal-footer">
<div class="action-button">
<button type="submit"
class="btn btn-success ok-button">
<span>Додати</span>
</button>
<button type="reset"
class="btn btn-danger remove-button">
<span>Відмінити</span>
</button>
</div>
</div>
</div>
</form>
当我调试时,IFormFile
总是 null
。我尝试使用 [FromForm] 但它没有帮助。我用谷歌搜索,发现我的 name
形式和参数名称不同,但它有效。你能不能给我一些关于如何解决它的提示。谢谢你,祝你有美好的一天!
您必须将 <form>
的 enctype
属性设置为 multipart/form-data
才能将文件发送到服务器
<form class="form" method="post" asp-controller="Meal" asp-action="Update" enctype="multipart/form-data">