Aquí está mi código del controlador y también mi Vista:Carga de múltiples imágenes de la misma forma usando 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>
}
Y en el controlador. No se centre en el contenido del método de acción, simplemente concéntrese en el parámetro del tipo List<HttpPostedFileBase>
. ¿Es esta la manera correcta de hacer las cosas? Tal como está, images
es nulo a partir del envío del formulario.
[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);
}
}
Si pudiera proporcionar un ejemplo muy simple que sería fantástico.
Resulta Sólo tenía que modificar el código de Vista para utilizar el nombre de la colección HttpPostFile. Ahora, ¿qué es el protocolo aquí? ¿Respondo mi propia pregunta? –
Si ninguna de las respuestas publicadas le da una respuesta correcta, sí, publique su propia respuesta y márquela. Si una de las respuestas está muy cerca de lo que quería, entonces dé el punto que falta en el comentario o edite la respuesta y márquela. – Maheep