Upload mehrerer Dateien in einem Formular MVC4
Ich versuche das hochladen mehrerer Bilder auf einer form
@using (Html.BeginForm("Create", "AdminRestaurants", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="form-group">
<label for="logoFile" class="col-sm-2 control-label">Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="logoFile" id="logoFile" />
</div>
</div>
<div class="form-group">
<label for="fohFile" class="col-sm-2 control-label">FOH Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="fohFile" id="fohFile" />
</div>
</div>
<div class="form-group">
<label for="bohFile" class="col-sm-2 control-label">BOH Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="bohFile" id="bohFile" />
</div>
</div>
<div class="form-group">
<label for="mgmFile" class="col-sm-2 control-label">MGM Logo:</label>
<div class="col-sm-6">
<input type="file" multiple="" name="mgmFile" id="mgmFile" />
</div>
</div>
Ich versuche zu verarbeiten, die form auf der Steuerung mit diesem
public ActionResult Create(IEnumerable<HttpPostedFileBase> files, RestaurantModel collection)
{
if (ViewData.ModelState.IsValid)
{
}
}
Derzeit nichts zeigt sich in der files
Unterschrift auf dem controller. Dies scheint gut zu funktionieren, wenn nur arbeiten mit einer Datei
public ActionResult Create(HttpPostedFileBase file, EventsModel collection)
Kann mir jemand zeigen in die Richtung, dass mehrere Dateien hochgeladen werden, die mit einem Formular?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, dass Sie form schafft eine post-Anforderung mit Informationen, die das Modell binder binden können, weil die Namenskonvention ist nicht richtig.
sehen Sie, Sie haben 4 Datei-Felder, jedes mit einem anderen Namen, für das Modell, das Bindemittel zu binden, Sie richtig zu Ihrem controller-Aktion Signatur sollte wie folgt Aussehen:
Folgenden MCV-design-Muster ist Die beste option wäre, um ein ViewModel, das hält einen
IEnumerable<HttpPostedFileBase>
und erstellen Sie einen benutzerdefinierten editor-Vorlage für eine
IEnumerable<HttpPostedFileBase>
so, dass man es nutzen kann, wie:
und Ihre controller handeln würde wie folgt Aussehen:
Andere Optionen sind:
Verwenden Sie die HTML5-multiple-Attribut auf die Datei-input-Feld wie diesem:
und eine controller-Aktion wie folgt:
oder mehrere file-Felder, sondern indizieren Sie in Ihrem Namen:
dann könnte man eine controller-Aktion wie folgt:
Dies würde nur funktionieren, wenn Ihre Datei-Eingänge hatte, indizierte Namen wie
files[0]
,files[1]
,files[2]
,...Um zu verstehen, wie das Modell der Bindung an eine Liste funktioniert asp.net mvc, empfehle ich, dass Sie diesen post Lesen: Modell der Bindung an eine Liste
Sie haben nicht einmal zu verwenden-Modell verbindlich, um die Dateien. Verwenden
Request.Files
in Ihrer Aktion, um Sie zu bekommen.Als Hier, demonstriere ich mit einfachen Beispiel : http://www.infinetsoft.com/Post/How-to-create-multiple-fileUpload-using-asp-net-MVC-4/1229#.V0J-yfl97IU