Hochladen mehrerer Dateien in einem Formular MVC4

8

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

%Vor%

Kann mir jemand in die Richtung zeigen, dass mehrere Dateien mit einem Einsendeformular hochgeladen werden können?

    
Jon Harding 26.11.2013, 03:59
quelle

3 Antworten

15

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>

erstellen

, 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%     
Mortalus 26.11.2013, 04:07
quelle
2

Dies würde nur funktionieren, wenn Ihre Dateieingänge Namen wie files[0] , files[1] , files[2] , ...

hätten

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.

%Vor%     
ataravati 26.11.2013 04:07
quelle
0
%Vor%

Wie hier zeige ich mit einem einfachen Beispiel: Ссылка

    
Thivan Mydeen 23.05.2016 06:51
quelle