2010-11-16 11 views
7

Sto costruendo un'app mvc per la segnalazione. Ho una pagina che contiene un modulo che contiene più elenchi a discesa per scegliere alcuni criteri per un report. Ho quindi un pulsante di input per creare il report. Questo pulsante chiama una nuova vista dallo stesso controller. La nuova vista ottiene i valori dalla pagina in cui i criteri vengono scelti dai parametri e li utilizza per popolare il proprio modello di visualizzazione. Funziona tutto bene.Nuova finestra usando asp mvc in formato html

Vorrei aprire i report in una nuova finestra. Quando guardo il controller, tutti i parametri che dovrebbero provenire dalla pagina di selezione sono nulli. Presumo che dovrò passare questi attraverso la querystring per essere prelevati dal controller. C'è un modo per ottenere i valori degli elenchi a discesa dalla mia viewpage per costruire la querystring?

È un buon modo per realizzare ciò che sto cercando di fare? Sarebbe meglio usare un ActionLink invece di un pulsante di input? Fa qualche differenza?

Spero che tutto abbia un senso. Grazie per qualsiasi pensiero.

risposta

29

Basta impostare un attributo target nel modulo su _blank e dovrebbe aprire la richiesta in una nuova pagina/scheda in base al browser utilizzato.

<% using (Html.BeginForm(myAction, myController, FormMethod.Post, new { target = "_blank" }) 
    { %> 
     <%-- ... --%> 
<% } %> 
+1

grazie - questo ha funzionato perfettamente. – czuroski

4

Come dice NickLarsen ...

è possibile utilizzare l'attributo target="_blank" dell'elemento modulo per visualizzare i risultati in una nuova finestra.

<form action="/controller/action" method="post" target="_blank"> 

O

<% Html.BeginForm("action", "controller", FormMethod.Post, new { target="_blank" }); %> 
    //... 
<% Html.EndForm(); %> 
+0

L'overload 'BeginForm' che si sta utilizzando assume i valori del percorso. L'obiettivo può essere impostato nei valori del percorso? Ho pensato che avrebbe dovuto essere impostato in attributi HTML. Non ho ancora provato quello che hai scritto, solo curioso. –

+0

@NickLarsen Hai ragione, ho digitato il sovraccarico sbagliato. L'ho aggiornato per utilizzare l'oggetto htmlAttributes –