2012-04-10 9 views
0

Ich habe ein Ansichtsmodell, das in einer Ansicht angezeigt wird, die uplofy verwendet. Ich muss Sammlungsdaten zurück in der Post zurückgeben. Wie kann ich das machen?Uploadify - MVC3: Zurückgeben von Formsammlungsdaten?

Ansichtsmodell:

public class ViewModel 
{ 
    string Name; 
    IEnumerable<Junk> theJunk; 
} 

public Junk 
{ 
    int id; 
    string Name; 
} 

Ausblick:

@model ViewModel 

@using (@Html.BeginForm()) 
{ 
    <input type="file" name="dr405" id="dr405" /> 

    <div> 
     @Html.LabelFor(model => model.Name) 
     @Html.EditorFor(model => model.Name) 
    </div>   
    @Html.EditorFor(model => model.theJunk) 

    <input type="submit" value="Upload Junk" /> 
} 

<script type="text/javascript"> 
    jQuery.noConflict(); 
    jQuery(document).ready(function() { 
     jQuery("#dr405").uploadify({ 
      'uploader': '@Url.Content("~/Scripts/uploadify.swf")', 
      'cancelImg': '/Content/themes/base/images/cancel.png', 
      'buttonText': 'Browse Files', 
      'script': 'home/upload', 
      'folder': '/uploads', 
      'fileDesc': 'Image Files', 
      'fileExt': '*.jpg;*.jpeg;*.gif;*.png', 
      'sizeLimit': '38000', 
      'multi': true, 
      'auto': true, 
     }); 
    }); 
    </script> 

Controller:

[HttpPost] 
    public ActionResult Upload(HttpPostedFileBase fileData, FormCollection collection) 
    { 
     // Get my view model here 
     // ...get the main Name! 
     // ...get the collection of Junk 

     return "ok"; 
    } 
+0

Um Ihre Frage zu konsolidieren, möchten Sie mehrere Dateien und ein stark typisiertes Formular (Modell) aktualisieren und Sie möchten wissen, wie das geht? –

+0

@Erik Philips: per Upload() Post zurück, der beim Hochladen mehrerer Dateien via Uploadify aufgerufen wird, möchte ich mein View Model (bzw. welche Formulardaten) zurück in den Upload() Post zurück holen. Die FormsCollection ist null, wenn sie zurückkommt, und es gibt etwas, das mit Uploadify zusammenhängt, wo Sie Formulardaten separat übergeben müssen, wenn das uploovy-Plugin initialisiert wird. – JaJ

Antwort

3

ein Hier article dieses Szenario abdeckt. Sie könnten den Parameter scriptData verwenden, mit dem Sie zusätzliche Werte an den Server übergeben können. Da aber uploadify mehrere Anfragen für jede Datei sendet (vorausgesetzt, Sie haben die Option multi auf true gesetzt), könnten Sie zwei Controller-Aktionen haben: Die erste wird für jede ausgewählte Datei getroffen, so dass sie irgendwo gespeichert wird und die zweite wird heiß sobald alle Dateien hochgeladen wurden und die Formulardaten senden. Sie sollten auch die Option auto auf false setzen, wenn Sie nicht möchten, dass der Upload unmittelbar nach der Auswahl der Dateien gestartet wird.