Oto mój kod kontrolera, a także moim zdaniem:Przesyłam kilka zdjęć w tej samej formie, używając 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>
}
iw sterowniku. Nie skupiaj się na zawartości metody akcji, skup się tylko na parametrze typu List<HttpPostedFileBase>
. Czy to właściwy sposób robienia rzeczy? Tak jak jest, images
ma wartość NULL po przesłaniu formularza.
[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);
}
}
Jeśli mógłbyś podać bardzo prosty przykład, który byłby fantastyczny.
Okazuje się, ja po prostu potrzebne do modyfikowania widoku kodu do używania nazwy kolekcji HttpPostFile. Jaki jest tutaj protokół, czy odpowiadam na własne pytanie? –
Jeśli żadna z zamieszczonych odpowiedzi nie daje prawidłowej odpowiedzi, należy napisać własną odpowiedź i oznaczyć ją. Jeśli jedna z odpowiedzi jest bardzo zbliżona do tego, co chciałeś, podaj to, czego brakowało w komentarzu, lub edytuj samą odpowiedź i zaznacz ją. – Maheep