2009-04-07 3 views
0

Ich habe eine Funktion zum Hochladen von Dateien in meiner asp.net mvc-Anwendung, die Benutzer eine xslx-Datei hochladen können, die Daten enthält, die in einer Datenbank gespeichert werden sollen. Diese Daten können sich auf eine von vielen Kategorien beziehen. Ich muss in der Lage sein zu erkennen, in welche Kategorie die Daten, die hereinkommen sollen, verwandt sein sollten, also dachte ich, dass eine Dropdown-Liste für den Job perfekt wäre. Ich weiß jedoch nicht, wie man den Listenwert erreicht, wenn der Benutzer die Daten veröffentlicht. Dies ist, was der Code für das Formular wie folgt aussieht:DropDownList in Verbindung mit dem Hochladen von Dateien in asp.net mvc

<form action="/Import/UploadFiles/" method="post" enctype="multipart/form-data"> 
    <fieldset id="fileImport"> 
     <legend>Importinställningar</legend> 
     <label for="file">Importfil:</label> 
     <input type="file" id="file" name="file" /> 
     <%= Html.DropDownList("Name", (IEnumerable<SelectListItem>)ViewData["assignments"]) %> 
     <p> 
      <input type="submit" value="Spara"/> 
      <input type="button" value="Avbryt" onclick="window.location.href='/'" /> 
     </p> 
    </fieldset> 
</form> 

Da ich mit einem Datei-Upload-Szenario zu tun habe ich keine Aktion Link, die ich Daten verwenden kann, um die Steuerung zu übergeben, sondern eine Eingang mit dem Typ absenden.

Wie soll ich den ausgewählten Wert der Dropdown-Liste lesen, damit der ausgewählte Wert an den Controller übergeben werden kann?

Antwort

0

Es gibt ein paar verschiedene Möglichkeiten, wie Sie das funktionieren lassen können. Fügen Sie zuerst einen Zeichenfolgenparameter mit dem Namen Name zu Ihrer UploadFiles-Methode hinzu. Der Standardordner füllt ihn aus dem Formularwert mit demselben Namen. Alternativ können Sie den ValueProvider innerhalb des Controllers verwenden - wenn Sie dieselbe Aktion verwenden, um beispielsweise die Ansicht zu rendern und auf den Post zu reagieren - um den Wert des Parameters mit dem Namen Name zu extrahieren.

public ActionResult UploadFiles(string Name) 
{ 
    ... 
} 

oder

public ActionResult UploadFiles() 
{ 
    string name = this.ValueProvider.ContainsKey("Name") 
         ? this.ValueProvider[key].AttemptedValue 
         : null; 

    ... 
} 
+0

Ich habe stecken Denken wir den Wert durch die resultierende URL passieren mussten. Natürlich funktioniert das. Vielen Dank! Es dauert ein wenig, bis ich mich an MVC gewöhnt habe :) – Ciddan