La gestione di 2 pulsanti invia azioni in un'unica visualizzazione/modulo: ASP.NET MVC 2 RTM
-
20-09-2019 - |
Domanda
Ho una vista in cui l'utente è in grado di caricare un file sul server.
In questa visualizzazione ho anche 2 pulsanti:uno per caricare un file e l'altro per scaricare l'ultimo file importato.
Nel mio Controller ho creato 2 metodi di azione:Importazione e esportazione.
Come posso reindirizzare ogni clic del pulsante al metodo di azione corretto nel mio Controller?
Ho provato Html.ActionLink:
<%= Html.ActionLink("Upload", "Import", "OracleFile")%>
<%= Html.ActionLink("Download", "Export", "OracleFile")%>
Html.ActionLink non ha funzionato.I collegamenti di azione mi portavano ai metodi di azione corretti ma generavano una richiesta GET.In questo modo Request.Files.Count = 0.
Ho bisogno di una richiesta POST.
Nota:la parte più intrigante è che il caricamento funzionava e all'improvviso ha smesso di funzionare.Ho visto che alcune persone riscontrano lo stesso problema con le attività FileUpload in cui Request.Files è sempre vuoto.Penso che sia vuoto perché hai bisogno di un post sul server.Non è vero?
Soluzione
forse questo ti darà l'idea:
visualizzazione:
<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>
controllore:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action (FormCollection formCollection)
{
if (formCollection["submitImport"] != null)
{
return Import(formCollection);
}
if (formCollection["submitExport"] != null)
{
return Export(formCollection);
}
}
IL Esportare E Importare sono le azioni appropriate
Altri suggerimenti
È necessario utilizzare un "form-data multipart /" la forma, e inviare il modulo. No ActionLink.
<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
<input type="file" name="file" id="file" />
<input type="submit" value="Upload" />
</form>
Per generare una richiesta POST per il caricamento, utilizzare l'elemento modulo di input di file e semplicemente inviare al server ala normale.
http://www.w3schools.com/jsref/dom_obj_fileupload.asp
Date un'occhiata a questo post del blog di Scott Hanselman. http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx