La gestione di 2 pulsanti invia azioni in un'unica visualizzazione/modulo: ASP.NET MVC 2 RTM

StackOverflow https://stackoverflow.com/questions/2444245

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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top