Вот мой код контроллера, а также мой Вид:Загрузка нескольких изображений в одной и той же форме, используя MVC3
@using (Html.BeginForm("Create", "Product", FormMethod.Post, new { enctype = "multipart/form-data" })) {
@Html.ValidationSummary()
<div class="form-field">
<p>@Html.LabelFor(m => m.Name)</p>
@Html.EditorFor(m => m.Name)
</div>
<div class="form-field">
<p>@Html.LabelFor(m => m.Description)</p>
@Html.EditorFor(m => m.Description)
</div>
<div class="form-field">
<p>@Html.LabelFor(m => m.UnitPrice)</p>
@Html.EditorFor(m => m.UnitPrice)
</div>
<div class="form-field">
<input type="file" name="image1" />
<input type="file" name="image2" />
<input type="file" name="image3" />
</div>
<div class="form-field">
<input type="submit" value="Create" />
</div>
}
И в контроллере. Не фокусируйтесь на содержании метода действия, просто сосредоточьтесь на параметре типа List<HttpPostedFileBase>
. Правильно ли это? Как это, images
является низом при подаче формы.
[HttpPost]
public ActionResult Create(ProductModel model, List<HttpPostedFileBase> images)
{
try
{
if (ModelState.IsValid)
{
var newProduct = Mapper.Map<ProductModel, Product>(model);
_productRepository.CreateProduct(newProduct);
_productRepository.SaveChanges();
}
return RedirectToAction("Index");
}
catch
{
return View(model);
}
}
Если вы могли бы предоставить очень простой пример, который был бы фантастическим.
Оказывается, мне просто нужно изменить вид кода, чтобы использовать имя коллекции HttpPostFile. Теперь, что такое протокол, я отвечаю на собственный вопрос? –
Если ни один из полученных ответов не дает правильного ответа, да, отправляйте свой собственный ответ и отметьте его. Если один из ответов очень близок к тому, что вы хотели, укажите то, что отсутствует в комментарии или отредактируйте сам ответ и отметьте его. – Maheep