Ich versuche, mehrere Bilder auf ein Formular hochzuladen
%Vor%Ich versuche, das Formular auf dem Controller mit diesem
zu verarbeiten %Vor% Derzeit wird in der files
-Signatur auf dem Controller nichts angezeigt. Dies scheint gut zu funktionieren, wenn nur mit einer Datei gearbeitet wird
Kann mir jemand in die Richtung zeigen, dass mehrere Dateien mit einem Einsendeformular hochgeladen werden können?
Ihr Problem besteht darin, dass das Formular eine Postanforderung mit Informationen erstellt, die der Modellbinder binden kann, weil die Namenskonvention nicht richtig ist.
Sie sehen, Sie haben 4 Dateifelder, die jeweils einen anderen Namen haben, damit das Modellbinder sie richtig bindet, sollte Ihre Controlleraktionssignatur wie folgt aussehen:
%Vor% Nach dem MCV-Entwurfsmuster Die beste Option wäre die Verwendung eines ViewModel, das ein IEnumerable<HttpPostedFileBase>
enthält.
und Sie würden eine benutzerdefinierte Editorvorlage für ein IEnumerable<HttpPostedFileBase>
, damit Sie es so verwenden können:
%Vor%und Ihre Controller-Aktion würde so aussehen:
%Vor%Weitere Optionen sind: Verwenden Sie das HTML5-Mehrfachattribut im Dateieingabefeld wie folgt:
%Vor%und eine Controller-Aktion wie folgt:
%Vor%oder verwenden Sie mehrere Dateifelder, indizieren Sie sie jedoch in ihrem Namen:
%Vor%und dann könnten Sie eine Controller-Aktion wie folgt verwenden:
%Vor% Dies würde nur funktionieren, wenn Ihre Dateieingänge Namen wie files[0]
, files[1]
, files[2]
, ...
Um zu verstehen, wie die Bindung von Modellen an eine Liste in asp.net mvc funktioniert, empfehle ich Ihnen, diesen Beitrag zu lesen: Modellbindung an eine Liste
Sie müssen nicht einmal die Modellbindung verwenden, um die Dateien zu erhalten. Verwenden Sie Request.Files
in Ihrer Aktion, um sie zu erhalten.
Tags und Links asp.net-mvc c# asp.net-mvc-4 file-upload