Ecco il mio codice di controllo e anche il mio Vista:caricamento di più immagini nella stessa forma con 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>
}
E nel controller. Non concentrarti sul contenuto del metodo di azione, concentrati solo sul parametro di tipo List<HttpPostedFileBase>
. È questo il modo giusto di fare le cose? Allo stato attuale, images
è nullo dopo l'invio del modulo.
[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);
}
}
Se potessi fornire un esempio molto semplice sarebbe fantastico.
Si scopre Avevo solo bisogno di modificare il codice della vista per utilizzare il nome della collezione HttpPostFile. Ora, qual è il protocollo qui, rispondo alla mia stessa domanda? –
Se nessuna delle risposte inviate fornisce la risposta corretta, sì, pubblica la tua risposta e contrassegnala. Se una delle risposte è molto vicina a ciò che volevi, dai a ciò che mancava nel commento o modifica la risposta stessa e contrassegnala. – Maheep