2010-11-18 9 views
2

Ich arbeite an einem stark typisierten Bearbeitungsformular für ein MVC-Modell, das eine Sammlung von untergeordneten Modellen enthält (Dokument enthält viele LocalizedDocuments). Jedes Dokument kann 0, 1 oder viele lokalisierte Dokumente enthalten, und jedes lokalisierte Dokument hat einen Eingabetyp = "Datei", damit der Benutzer eine neue Version der Datei hochladen kann.ASP.NET MVC Mehrere Datei-Uploads

Um die Bearbeitungsfelder für jedes LocalizedDocument zu rendern, habe ich eine stark typisierte Teilansicht, die die Felder für das LocalizedDocument enthält, und dann in meiner Bearbeitungsansicht Html.EditorFor(model => model.Document.LocalizedDocuments).

Wenn das Formular veröffentlicht wird, wird jedem meiner LocalizedDocument-Felder wie erwartet LocalizedDocument [i] vorangestellt. Wie kann ich es aber bekommen, damit der Dateieingabe auch LocalizedDocument [i] vorangestellt wird, damit ich den Datei-Upload auf das entsprechende LocalizedDocument beziehen kann?

Antwort

0

Sagen Sie mir, wenn ich diese Frage falsch interpretiere. Sie haben Dokumente, die Sie hochladen müssen, die zu einer übergeordneten Tabelle gehören, oder müssen diesen Dokumenten eine bestimmte ID zuweisen, nachdem Sie mehrere hochgeladen haben?

Ich werde Uploadify verwenden.

Sie müssen die ID des LocalizedDocument kennen. Sie können auch nur jeweils 1 hochladen. (Jede Datei ist ein separater Server-Aufruf)

Zunächst müssen Sie den Daten, die an den Server gesendet werden, die ID des LocalizedDocuments zuweisen.

<script type="text/javascript"> 
var auth = "<%: Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>"; 
var ASPSESSID = "<%: Session.SessionID %>"; 

$(document).ready(function() { 
    $('#file_upload').uploadify({ 
     'uploader': '/Content/uploadify.swf', 
     'script': '<%: Url.Action("Upload", "Documents") %>', 
     'cancelImg': '/Content/Images/cancel.png', 
     'folder': '/uploads', 
     'scriptData': { ASPSESSID: ASPSESSID, AUTHID: auth, DocumentId: <%: Model.LocalizedDocumentId %>}, 
     'auto':true, 
     'multi': true 
    }); 
}); 
</script> 

Controller:

public ActionResult InsertImages(HttpPostedFileBase FileData, int DocId){ }