Ich habe ein Formular, in dem ich mehrere Dateien hochlade, und jeder hochgeladenen Datei sind ein paar Textfelder und einige Kontrollkästchen zugeordnet. Ich habe für das Hochladen von mehreren Dateien gesehen Beispiele, bei denen die Action Signatur so etwas wie diese:Datei-Upload an das Viewmodel gebunden
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> fileUpload)
Allerdings kann ich nicht jedes Beispiel finden, wo ich mehrere Dateien hochgeladen haben kann, wo meine Action Signatur so etwas wie diese:
Der Grund, warum ich dieses Viewmodel gepostet werden soll, ist, weil ich denke, es ist sauberer als mit der FormCollection-Variable und weil ich möchte jede Datei hochgeladen und die Daten zusammen mit den zugehörigen Textfeldern über eine gruppiert werden List<FileUploadPacket>
welches wird p Kunst des Ansichtsmodell
UPDATE
My View-Modell unten:
public class EmployeeVM
{
public int EmployeeID {get ;set;}
public string EmpName {get ;set;}
//Other properties
public List<FileUploadPacket> FileUploadPackets { get; set; }
}
Die FileUploadPacket Klasse, die die Eigenschaft des Typs hat HttpPostedFileBase
public class FileUploadPacket
{
public int FileID {get ;set;}
public string UserEnteredDesc {get ;set;}
//some more other properties
public HttpPostedFileBase UpFile { get; set; }
}
-Code-Snippet meiner Sicht. aspx wie unten
<%: Html.TextBoxFor(model => model.EmpName, new { maxLength = 50 })%>
Upload your files here:
<input type="file" id="UpFile" name="UpFile" value="ActionHandlerForForm" />
<%: Html.TextBoxFor(model => model.FileUploadPackets[0].UserEnteredDesc)%>
<input type="file" id="UpFile" name="UpFile" value="ActionHandlerForForm" />
<%: Html.TextBoxFor(model => model.FileUploadPackets[1].UserEnteredDesc)%>
Wie Sie sehen können, habe ich alle anderen spezifischen Eigenschaften für diese eine Datei hochgeladen in seiner eigenen Klasse gehalten. So kann ein Mitarbeiter in meiner Form seinen Namen eingeben und seine Dateien hochladen und für jede Datei eine Beschreibung und andere Details angeben. Wenn ich die öffentliche HttpPostedFileBase UpFile { get; set; }
-Eigenschaft in die Klasse EmployeeVM
verschiebe, muss ich alle Dateien separat in einem Array sammeln und manuell eine Datei ihrer Beschreibung zuordnen. Gibt es keine Möglichkeit, dies zu tun, die UpFile
Eigenschaft in der FileUploadPacket
Klasse selbst zu halten?
Ich benutze die aspx-View-Engine.
Bitte helfen. Vielen Dank für Ihre Zeit ...
Der 'enctype =" multipart/form-data "'Teil löste es für mich. –