Umgang mit 2 Tasten einreichen Aktionen in einer einzigen Ansicht / Form - ASP.NET MVC 2 RTM
-
20-09-2019 - |
Frage
Ich habe eine Ansicht, in der der Benutzer in der Lage, eine Datei auf den Server hochgeladen werden.
In dieser Ansicht Ich habe auch 2 Tasten. Man eine Datei zum Hochladen und die letzte Datei importiert Download
In meinem Controller erstellt haben I 2 Aktionsmethoden. Import und Export
Wie kann ich verwalten jede Schaltfläche klicken, um die richtige Aktion Methode Umleitung in meinem Controller angeschlossen werden?
Ich habe Html.ActionLink versucht:
<%= Html.ActionLink("Upload", "Import", "OracleFile")%>
<%= Html.ActionLink("Download", "Export", "OracleFile")%>
Html.ActionLink hat nicht den Trick. Die Aktion Links wurden mir die richtige Aktion Methoden nehmen, aber sie einen GET-Request wurden zu erzeugen. Auf diese Weise Request.Files.Count = 0 ist.
Ich brauche eine Anforderung POST.
Hinweis: der interessanteste Teil ist, dass der Upload arbeitet und plötzlich es aufgehört zu arbeiten. Ich habe gesehen, dass einige Leute das gleiche Problem mit Fileupload-Aufgaben haben, in denen die Request.Files immer leer sind. Ich denke, es ist leer, weil Sie einen Beitrag zum Server benötigen. Ist es nicht?
Lösung
Vielleicht geben u die Idee:
:
<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
<input type="file" name="file" id="file" />
<input type="submit" name= "submitImport" value="Upload" />
<input type="submit" name = "submitExport" value="Download" />
</form>
Controller:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action (FormCollection formCollection)
{
if (formCollection["submitImport"] != null)
{
return Import(formCollection);
}
if (formCollection["submitExport"] != null)
{
return Export(formCollection);
}
}
Exportieren und Importieren sind die appropriateactions
Andere Tipps
Sie haben eine "multipart / form-data" Formular zu verwenden, und das Formular abzuschicken. Keine Action.
<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
<input type="file" name="file" id="file" />
<input type="submit" value="Upload" />
</form>
eine POST-Anforderung für den Upload zu erstellen, das Dateieingabe Formularelement verwenden und nur Post zurück an den Server ala normal.
http://www.w3schools.com/jsref/dom_obj_fileupload.asp
Haben Sie einen Blick auf diesen Blog-Post von Scott Hanselman. http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx